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        /// Num. chunks overwritten before they have been read (i.e. loss of data).
1110        #[prost(uint64, optional, tag = "3")]
1111        pub chunks_overwritten: ::core::option::Option<u64>,
1112        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
1113        /// is configured with FillPolicy == DISCARD.
1114        #[prost(uint64, optional, tag = "18")]
1115        pub chunks_discarded: ::core::option::Option<u64>,
1116        /// Num. chunks (!= packets) that were fully read from the circular buffer by
1117        /// the consumer. This may not be equal to |chunks_written| either in the
1118        /// middle of tracing, or if |chunks_overwritten| is non-zero.
1119        #[prost(uint64, optional, tag = "17")]
1120        pub chunks_read: ::core::option::Option<u64>,
1121        /// Num. chunks that were committed out of order.
1122        #[prost(uint64, optional, tag = "11")]
1123        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
1124        /// Num. times the ring buffer wrapped around.
1125        #[prost(uint64, optional, tag = "4")]
1126        pub write_wrap_count: ::core::option::Option<u64>,
1127        /// Num. out-of-band (OOB) patches that succeeded.
1128        #[prost(uint64, optional, tag = "5")]
1129        pub patches_succeeded: ::core::option::Option<u64>,
1130        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
1131        #[prost(uint64, optional, tag = "6")]
1132        pub patches_failed: ::core::option::Option<u64>,
1133        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
1134        /// successful packet read.
1135        #[prost(uint64, optional, tag = "7")]
1136        pub readaheads_succeeded: ::core::option::Option<u64>,
1137        /// Num. readaheads aborted because of missing chunks in the sequence stream.
1138        /// Note that a small number > 0 is totally expected: occasionally, when
1139        /// issuing a read, the very last packet in a sequence might be incomplete
1140        /// (because the producer is still writing it while we read). The read will
1141        /// stop at that point, for that sequence, increasing this counter.
1142        #[prost(uint64, optional, tag = "8")]
1143        pub readaheads_failed: ::core::option::Option<u64>,
1144        /// Num. of violations of the SharedMemoryABI found while writing or reading
1145        /// the buffer. This is an indication of either a bug in the producer(s) or
1146        /// malicious producer(s).
1147        #[prost(uint64, optional, tag = "9")]
1148        pub abi_violations: ::core::option::Option<u64>,
1149        /// Num. of times the service detected packet loss on a trace writer
1150        /// sequence. This is usually caused by exhaustion of available chunks in the
1151        /// writer process's SMB. Note that this relies on the client's TraceWriter
1152        /// indicating this loss to the service -- packets lost for other reasons are
1153        /// not reflected in this stat.
1154        #[prost(uint64, optional, tag = "19")]
1155        pub trace_writer_packet_loss: ::core::option::Option<u64>,
1156        #[prost(message, optional, tag = "21")]
1157        pub shadow_buffer_stats: ::core::option::Option<buffer_stats::ShadowBufferStats>,
1158    }
1159    /// Nested message and enum types in `BufferStats`.
1160    pub mod buffer_stats {
1161        /// Statistics for TRACE_BUFFER_V2_SHADOW_MODE comparison.
1162        /// Only populated when the buffer is configured with shadow mode.
1163        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1164        pub struct ShadowBufferStats {
1165            /// Total num. packets read. This is not affected by capping of the hasher
1166            /// to 32K elements.
1167            #[prost(uint64, optional, tag = "1")]
1168            pub packets_seen: ::core::option::Option<u64>,
1169            /// Num. packets found in both V1 and V2 buffers (matched by content hash).
1170            #[prost(uint64, optional, tag = "2")]
1171            pub packets_in_both: ::core::option::Option<u64>,
1172            /// Num. packets found only in V1 buffer but not in V2.
1173            #[prost(uint64, optional, tag = "3")]
1174            pub packets_only_v1: ::core::option::Option<u64>,
1175            /// Num. packets found only in V2 buffer but not in V1.
1176            #[prost(uint64, optional, tag = "4")]
1177            pub packets_only_v2: ::core::option::Option<u64>,
1178            /// Num. patch operations attempted.
1179            #[prost(uint64, optional, tag = "5")]
1180            pub patches_attempted: ::core::option::Option<u64>,
1181            /// Num. patches that succeeded on V1 buffer.
1182            #[prost(uint64, optional, tag = "6")]
1183            pub v1_patches_succeeded: ::core::option::Option<u64>,
1184            /// Num. patches that succeeded on V2 buffer.
1185            #[prost(uint64, optional, tag = "7")]
1186            pub v2_patches_succeeded: ::core::option::Option<u64>,
1187            /// This is to distinguish the updated calculations after fixing the
1188            /// hashes. This field is either empty or "2"
1189            #[prost(uint32, optional, tag = "8")]
1190            pub stats_version: ::core::option::Option<u32>,
1191        }
1192    }
1193    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
1194    /// visible as a unique sequence ID in the trace.
1195    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1196    pub struct WriterStats {
1197        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
1198        /// correlate the stats with the actual packet types.
1199        #[prost(uint64, optional, tag = "1")]
1200        pub sequence_id: ::core::option::Option<u64>,
1201        /// The buffer index (0..N, as defined in the TraceConfig).
1202        #[prost(uint32, optional, tag = "4")]
1203        pub buffer: ::core::option::Option<u32>,
1204        /// These two arrays have the same cardinality and match the cardinality of
1205        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
1206        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
1207        /// for each bucket.
1208        #[prost(uint64, repeated, tag = "2")]
1209        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
1210        #[prost(int64, repeated, tag = "3")]
1211        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
1212    }
1213    /// This is set only when the TraceConfig specifies a TraceFilter.
1214    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1215    pub struct FilterStats {
1216        #[prost(uint64, optional, tag = "1")]
1217        pub input_packets: ::core::option::Option<u64>,
1218        #[prost(uint64, optional, tag = "2")]
1219        pub input_bytes: ::core::option::Option<u64>,
1220        #[prost(uint64, optional, tag = "3")]
1221        pub output_bytes: ::core::option::Option<u64>,
1222        #[prost(uint64, optional, tag = "4")]
1223        pub errors: ::core::option::Option<u64>,
1224        #[prost(uint64, optional, tag = "5")]
1225        pub time_taken_ns: ::core::option::Option<u64>,
1226        /// The number of bytes discarded by the filter (i.e. output - input).
1227        /// The array has one entry for each buffer defined in the config (unless no
1228        /// packets for that buffer were seen and hence filtered).
1229        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
1230        /// (output_bytes - input_bytes) because the filter might also discard
1231        /// server-generated synthetic packets, that have no buffer index.
1232        #[prost(uint64, repeated, packed = "false", tag = "20")]
1233        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
1234    }
1235    #[derive(
1236        Clone,
1237        Copy,
1238        Debug,
1239        PartialEq,
1240        Eq,
1241        Hash,
1242        PartialOrd,
1243        Ord,
1244        ::prost::Enumeration
1245    )]
1246    #[repr(i32)]
1247    pub enum FinalFlushOutcome {
1248        FinalFlushUnspecified = 0,
1249        FinalFlushSucceeded = 1,
1250        FinalFlushFailed = 2,
1251    }
1252    impl FinalFlushOutcome {
1253        /// String value of the enum field names used in the ProtoBuf definition.
1254        ///
1255        /// The values are not transformed in any way and thus are considered stable
1256        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1257        pub fn as_str_name(&self) -> &'static str {
1258            match self {
1259                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
1260                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
1261                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
1262            }
1263        }
1264        /// Creates an enum from field names used in the ProtoBuf definition.
1265        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1266            match value {
1267                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
1268                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
1269                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
1270                _ => None,
1271            }
1272        }
1273    }
1274}
1275/// Builtin clock domains used in Perfetto traces.
1276///
1277/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
1278/// representing the trace file's own timeline. Each trace file gets its own
1279/// instance (scoped by trace file index).
1280///
1281/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
1282/// fallback: if the first timestamp conversion uses a clock other than the
1283/// trace file clock and no explicit clock snapshot data exists, the trace time
1284/// is switched to BOOTTIME. This fallback does not fire for modern traces that
1285/// include ClockSnapshots or that only use the trace file clock directly.
1286///
1287/// The `primary_trace_clock` field in ClockSnapshot can definitively override
1288/// the trace time clock regardless of the above.
1289#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1290#[repr(i32)]
1291pub enum BuiltinClock {
1292    Unknown = 0,
1293    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
1294    Realtime = 1,
1295    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
1296    RealtimeCoarse = 2,
1297    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
1298    Monotonic = 3,
1299    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
1300    MonotonicCoarse = 4,
1301    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
1302    MonotonicRaw = 5,
1303    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
1304    /// For proto traces, this is used as a backwards-compatible fallback trace
1305    /// time clock when no explicit clock snapshots are present.
1306    Boottime = 6,
1307    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
1308    Tsc = 9,
1309    /// Corresponds to the perf event clock (PERF_CLOCK).
1310    Perf = 10,
1311    /// A synthetic clock representing the trace file's own timeline. Each trace
1312    /// file gets its own instance (scoped by trace file index). This is the
1313    /// default trace time clock before any clock snapshot or format-specific
1314    /// override takes effect.
1315    TraceFile = 11,
1316    MaxId = 63,
1317}
1318impl BuiltinClock {
1319    /// String value of the enum field names used in the ProtoBuf definition.
1320    ///
1321    /// The values are not transformed in any way and thus are considered stable
1322    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1323    pub fn as_str_name(&self) -> &'static str {
1324        match self {
1325            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
1326            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
1327            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
1328            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
1329            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
1330            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
1331            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
1332            Self::Tsc => "BUILTIN_CLOCK_TSC",
1333            Self::Perf => "BUILTIN_CLOCK_PERF",
1334            Self::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
1335            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
1336        }
1337    }
1338    /// Creates an enum from field names used in the ProtoBuf definition.
1339    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1340        match value {
1341            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
1342            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
1343            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
1344            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
1345            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
1346            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
1347            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
1348            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
1349            "BUILTIN_CLOCK_PERF" => Some(Self::Perf),
1350            "BUILTIN_CLOCK_TRACE_FILE" => Some(Self::TraceFile),
1351            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
1352            _ => None,
1353        }
1354    }
1355}
1356/// Semantic types for string fields. This tells the filter what kind of
1357/// data the field contains, so it can apply the right filtering rules.
1358/// See /rfcs/0011-subset-string-filter-rules.md for design details.
1359/// Introduced in: Perfetto v54.
1360#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1361#[repr(i32)]
1362pub enum SemanticType {
1363    Unspecified = 0,
1364    Atrace = 1,
1365    Job = 2,
1366    Wakelock = 3,
1367}
1368impl SemanticType {
1369    /// String value of the enum field names used in the ProtoBuf definition.
1370    ///
1371    /// The values are not transformed in any way and thus are considered stable
1372    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1373    pub fn as_str_name(&self) -> &'static str {
1374        match self {
1375            Self::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
1376            Self::Atrace => "SEMANTIC_TYPE_ATRACE",
1377            Self::Job => "SEMANTIC_TYPE_JOB",
1378            Self::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
1379        }
1380    }
1381    /// Creates an enum from field names used in the ProtoBuf definition.
1382    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1383        match value {
1384            "SEMANTIC_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1385            "SEMANTIC_TYPE_ATRACE" => Some(Self::Atrace),
1386            "SEMANTIC_TYPE_JOB" => Some(Self::Job),
1387            "SEMANTIC_TYPE_WAKELOCK" => Some(Self::Wakelock),
1388            _ => None,
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}
2103/// Nested message and enum types in `DisplayVideoConfig`.
2104pub mod display_video_config {
2105    #[derive(
2106        Clone,
2107        Copy,
2108        Debug,
2109        PartialEq,
2110        Eq,
2111        Hash,
2112        PartialOrd,
2113        Ord,
2114        ::prost::Enumeration
2115    )]
2116    #[repr(i32)]
2117    pub enum Format {
2118        /// Default (H.264).
2119        Unspecified = 0,
2120        H264 = 1,
2121        Hevc = 2,
2122    }
2123    impl Format {
2124        /// String value of the enum field names used in the ProtoBuf definition.
2125        ///
2126        /// The values are not transformed in any way and thus are considered stable
2127        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2128        pub fn as_str_name(&self) -> &'static str {
2129            match self {
2130                Self::Unspecified => "FORMAT_UNSPECIFIED",
2131                Self::H264 => "FORMAT_H264",
2132                Self::Hevc => "FORMAT_HEVC",
2133            }
2134        }
2135        /// Creates an enum from field names used in the ProtoBuf definition.
2136        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2137            match value {
2138                "FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
2139                "FORMAT_H264" => Some(Self::H264),
2140                "FORMAT_HEVC" => Some(Self::Hevc),
2141                _ => None,
2142            }
2143        }
2144    }
2145}
2146/// Custom configuration for the "android.surfaceflinger.layers" data source.
2147#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2148pub struct SurfaceFlingerLayersConfig {
2149    #[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
2150    pub mode: ::core::option::Option<i32>,
2151    #[prost(
2152        enumeration = "surface_flinger_layers_config::TraceFlag",
2153        repeated,
2154        packed = "false",
2155        tag = "2"
2156    )]
2157    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
2158}
2159/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
2160pub mod surface_flinger_layers_config {
2161    #[derive(
2162        Clone,
2163        Copy,
2164        Debug,
2165        PartialEq,
2166        Eq,
2167        Hash,
2168        PartialOrd,
2169        Ord,
2170        ::prost::Enumeration
2171    )]
2172    #[repr(i32)]
2173    pub enum Mode {
2174        Unspecified = 0,
2175        /// Trace layers snapshots. A snapshot is taken every time a layers change
2176        /// occurs.
2177        Active = 1,
2178        /// Generate layers snapshots from the transactions kept in the
2179        /// SurfaceFlinger's internal ring buffer.
2180        /// The layers snapshots generation occurs when this data source is flushed.
2181        Generated = 2,
2182        /// Trace a single layers snapshot.
2183        Dump = 3,
2184        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2185        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
2186        /// when a bugreport is taken.
2187        GeneratedBugreportOnly = 4,
2188        /// Layer snapshots are generated by ProtoVM from layer patches
2189        Protovm = 5,
2190    }
2191    impl Mode {
2192        /// String value of the enum field names used in the ProtoBuf definition.
2193        ///
2194        /// The values are not transformed in any way and thus are considered stable
2195        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2196        pub fn as_str_name(&self) -> &'static str {
2197            match self {
2198                Self::Unspecified => "MODE_UNSPECIFIED",
2199                Self::Active => "MODE_ACTIVE",
2200                Self::Generated => "MODE_GENERATED",
2201                Self::Dump => "MODE_DUMP",
2202                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
2203                Self::Protovm => "MODE_PROTOVM",
2204            }
2205        }
2206        /// Creates an enum from field names used in the ProtoBuf definition.
2207        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2208            match value {
2209                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2210                "MODE_ACTIVE" => Some(Self::Active),
2211                "MODE_GENERATED" => Some(Self::Generated),
2212                "MODE_DUMP" => Some(Self::Dump),
2213                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
2214                "MODE_PROTOVM" => Some(Self::Protovm),
2215                _ => None,
2216            }
2217        }
2218    }
2219    #[derive(
2220        Clone,
2221        Copy,
2222        Debug,
2223        PartialEq,
2224        Eq,
2225        Hash,
2226        PartialOrd,
2227        Ord,
2228        ::prost::Enumeration
2229    )]
2230    #[repr(i32)]
2231    pub enum TraceFlag {
2232        Unspecified = 0,
2233        Input = 2,
2234        Composition = 4,
2235        Extra = 8,
2236        Hwc = 16,
2237        Buffers = 32,
2238        VirtualDisplays = 64,
2239        /// INPUT | COMPOSITION | EXTRA
2240        All = 14,
2241    }
2242    impl TraceFlag {
2243        /// String value of the enum field names used in the ProtoBuf definition.
2244        ///
2245        /// The values are not transformed in any way and thus are considered stable
2246        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2247        pub fn as_str_name(&self) -> &'static str {
2248            match self {
2249                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
2250                Self::Input => "TRACE_FLAG_INPUT",
2251                Self::Composition => "TRACE_FLAG_COMPOSITION",
2252                Self::Extra => "TRACE_FLAG_EXTRA",
2253                Self::Hwc => "TRACE_FLAG_HWC",
2254                Self::Buffers => "TRACE_FLAG_BUFFERS",
2255                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
2256                Self::All => "TRACE_FLAG_ALL",
2257            }
2258        }
2259        /// Creates an enum from field names used in the ProtoBuf definition.
2260        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2261            match value {
2262                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
2263                "TRACE_FLAG_INPUT" => Some(Self::Input),
2264                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
2265                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
2266                "TRACE_FLAG_HWC" => Some(Self::Hwc),
2267                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
2268                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
2269                "TRACE_FLAG_ALL" => Some(Self::All),
2270                _ => None,
2271            }
2272        }
2273    }
2274}
2275/// Custom configuration for the "android.surfaceflinger.transactions" data
2276/// source.
2277#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2278pub struct SurfaceFlingerTransactionsConfig {
2279    #[prost(
2280        enumeration = "surface_flinger_transactions_config::Mode",
2281        optional,
2282        tag = "1"
2283    )]
2284    pub mode: ::core::option::Option<i32>,
2285}
2286/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
2287pub mod surface_flinger_transactions_config {
2288    #[derive(
2289        Clone,
2290        Copy,
2291        Debug,
2292        PartialEq,
2293        Eq,
2294        Hash,
2295        PartialOrd,
2296        Ord,
2297        ::prost::Enumeration
2298    )]
2299    #[repr(i32)]
2300    pub enum Mode {
2301        Unspecified = 0,
2302        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2303        /// SurfaceFlinger writes its internal ring buffer of transactions every time
2304        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
2305        /// initial state and the latest transactions.
2306        Continuous = 1,
2307        /// SurfaceFlinger writes the initial state and then each incoming
2308        /// transaction until the data source is stopped.
2309        Active = 2,
2310    }
2311    impl Mode {
2312        /// String value of the enum field names used in the ProtoBuf definition.
2313        ///
2314        /// The values are not transformed in any way and thus are considered stable
2315        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2316        pub fn as_str_name(&self) -> &'static str {
2317            match self {
2318                Self::Unspecified => "MODE_UNSPECIFIED",
2319                Self::Continuous => "MODE_CONTINUOUS",
2320                Self::Active => "MODE_ACTIVE",
2321            }
2322        }
2323        /// Creates an enum from field names used in the ProtoBuf definition.
2324        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2325            match value {
2326                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2327                "MODE_CONTINUOUS" => Some(Self::Continuous),
2328                "MODE_ACTIVE" => Some(Self::Active),
2329                _ => None,
2330            }
2331        }
2332    }
2333}
2334/// Data source that lists details (such as version code) about users on an
2335/// Android device.
2336#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2337pub struct AndroidUserListConfig {
2338    /// An allowlist of user type strings, used to control the granularity of
2339    /// user type information emitted in the trace. Exact, case-sensitive string
2340    /// matching is used.
2341    ///
2342    /// Any user type read from the device that is NOT present in the
2343    /// effective allowlist will have its type reported as
2344    /// "android.os.usertype.FILTERED".
2345    ///
2346    /// The effective allowlist is determined as follows:
2347    ///
2348    /// 1. If this 'user_type_filter' field is provided and non-empty:
2349    ///     This list itself is the effective allowlist.
2350    ///     Example TraceConfig:
2351    ///     --------------------
2352    ///     data_sources {
2353    ///         config {
2354    ///             name: "android.user_list"
2355    ///             target_buffer: 0
2356    ///             user_list_config {
2357    ///               # Only report these specific types, others become FILTERED.
2358    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
2359    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
2360    ///             }
2361    ///         }
2362    ///     }
2363    ///
2364    ///
2365    /// Note: This field does not support regular expressions.
2366    #[prost(string, repeated, tag = "1")]
2367    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2368}
2369/// Custom configuration for the "android.windowmanager" data source.
2370#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2371pub struct WindowManagerConfig {
2372    #[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
2373    pub log_frequency: ::core::option::Option<i32>,
2374    #[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
2375    pub log_level: ::core::option::Option<i32>,
2376    #[prost(enumeration = "window_manager_config::LogMode", optional, tag = "3")]
2377    pub log_mode: ::core::option::Option<i32>,
2378}
2379/// Nested message and enum types in `WindowManagerConfig`.
2380pub mod window_manager_config {
2381    #[derive(
2382        Clone,
2383        Copy,
2384        Debug,
2385        PartialEq,
2386        Eq,
2387        Hash,
2388        PartialOrd,
2389        Ord,
2390        ::prost::Enumeration
2391    )]
2392    #[repr(i32)]
2393    pub enum LogFrequency {
2394        Unspecified = 0,
2395        /// Trace state snapshots when a frame is committed.
2396        Frame = 1,
2397        /// Trace state snapshots every time a transaction is committed.
2398        Transaction = 2,
2399        /// Trace single state snapshots when the data source is started.
2400        SingleDump = 3,
2401    }
2402    impl LogFrequency {
2403        /// String value of the enum field names used in the ProtoBuf definition.
2404        ///
2405        /// The values are not transformed in any way and thus are considered stable
2406        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2407        pub fn as_str_name(&self) -> &'static str {
2408            match self {
2409                Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
2410                Self::Frame => "LOG_FREQUENCY_FRAME",
2411                Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
2412                Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
2413            }
2414        }
2415        /// Creates an enum from field names used in the ProtoBuf definition.
2416        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2417            match value {
2418                "LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
2419                "LOG_FREQUENCY_FRAME" => Some(Self::Frame),
2420                "LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
2421                "LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
2422                _ => None,
2423            }
2424        }
2425    }
2426    #[derive(
2427        Clone,
2428        Copy,
2429        Debug,
2430        PartialEq,
2431        Eq,
2432        Hash,
2433        PartialOrd,
2434        Ord,
2435        ::prost::Enumeration
2436    )]
2437    #[repr(i32)]
2438    pub enum LogLevel {
2439        Unspecified = 0,
2440        /// Logs all elements with maximum amount of information.
2441        Verbose = 1,
2442        /// Logs all elements but doesn't write all configuration data.
2443        Debug = 2,
2444        /// Logs only visible elements, with the minimum amount of performance
2445        /// overhead
2446        Critical = 3,
2447    }
2448    impl LogLevel {
2449        /// String value of the enum field names used in the ProtoBuf definition.
2450        ///
2451        /// The values are not transformed in any way and thus are considered stable
2452        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2453        pub fn as_str_name(&self) -> &'static str {
2454            match self {
2455                Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
2456                Self::Verbose => "LOG_LEVEL_VERBOSE",
2457                Self::Debug => "LOG_LEVEL_DEBUG",
2458                Self::Critical => "LOG_LEVEL_CRITICAL",
2459            }
2460        }
2461        /// Creates an enum from field names used in the ProtoBuf definition.
2462        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2463            match value {
2464                "LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
2465                "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
2466                "LOG_LEVEL_DEBUG" => Some(Self::Debug),
2467                "LOG_LEVEL_CRITICAL" => Some(Self::Critical),
2468                _ => None,
2469            }
2470        }
2471    }
2472    #[derive(
2473        Clone,
2474        Copy,
2475        Debug,
2476        PartialEq,
2477        Eq,
2478        Hash,
2479        PartialOrd,
2480        Ord,
2481        ::prost::Enumeration
2482    )]
2483    #[repr(i32)]
2484    pub enum LogMode {
2485        Unspecified = 0,
2486        /// Always logs a full state dump of the window hierarchy.
2487        FullState = 1,
2488        /// Logs a full state dump of the window hierarchy only when tracing starts.
2489        /// The following trace packets are lightweight patches containing only the
2490        /// last changes.
2491        Incremental = 2,
2492    }
2493    impl LogMode {
2494        /// String value of the enum field names used in the ProtoBuf definition.
2495        ///
2496        /// The values are not transformed in any way and thus are considered stable
2497        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2498        pub fn as_str_name(&self) -> &'static str {
2499            match self {
2500                Self::Unspecified => "LOG_MODE_UNSPECIFIED",
2501                Self::FullState => "LOG_MODE_FULL_STATE",
2502                Self::Incremental => "LOG_MODE_INCREMENTAL",
2503            }
2504        }
2505        /// Creates an enum from field names used in the ProtoBuf definition.
2506        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2507            match value {
2508                "LOG_MODE_UNSPECIFIED" => Some(Self::Unspecified),
2509                "LOG_MODE_FULL_STATE" => Some(Self::FullState),
2510                "LOG_MODE_INCREMENTAL" => Some(Self::Incremental),
2511                _ => None,
2512            }
2513        }
2514    }
2515}
2516#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2517pub struct ChromeConfig {
2518    #[prost(string, optional, tag = "1")]
2519    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
2520    /// When enabled, the data source should only fill in fields in the output that
2521    /// are not potentially privacy sensitive.
2522    #[prost(bool, optional, tag = "2")]
2523    pub privacy_filtering_enabled: ::core::option::Option<bool>,
2524    /// Instead of emitting binary protobuf, convert the trace data to the legacy
2525    /// JSON format. Note that the trace data will still be returned as a series of
2526    /// TracePackets, but the embedded data will be JSON instead of serialized
2527    /// protobuf.
2528    #[prost(bool, optional, tag = "3")]
2529    pub convert_to_legacy_json: ::core::option::Option<bool>,
2530    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
2531    pub client_priority: ::core::option::Option<i32>,
2532    /// Applicable only when using legacy JSON format.
2533    /// If |json_agent_label_filter| is not empty, only data pertaining to
2534    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
2535    #[prost(string, optional, tag = "5")]
2536    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
2537    ///   When enabled, event names should not contain package names.
2538    #[prost(bool, optional, tag = "6")]
2539    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
2540}
2541/// Nested message and enum types in `ChromeConfig`.
2542pub mod chrome_config {
2543    /// Priority of the tracing session client. A higher priority session may
2544    /// preempt a lower priority one in configurations where concurrent sessions
2545    /// aren't supported.
2546    #[derive(
2547        Clone,
2548        Copy,
2549        Debug,
2550        PartialEq,
2551        Eq,
2552        Hash,
2553        PartialOrd,
2554        Ord,
2555        ::prost::Enumeration
2556    )]
2557    #[repr(i32)]
2558    pub enum ClientPriority {
2559        Unknown = 0,
2560        Background = 1,
2561        UserInitiated = 2,
2562    }
2563    impl ClientPriority {
2564        /// String value of the enum field names used in the ProtoBuf definition.
2565        ///
2566        /// The values are not transformed in any way and thus are considered stable
2567        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2568        pub fn as_str_name(&self) -> &'static str {
2569            match self {
2570                Self::Unknown => "UNKNOWN",
2571                Self::Background => "BACKGROUND",
2572                Self::UserInitiated => "USER_INITIATED",
2573            }
2574        }
2575        /// Creates an enum from field names used in the ProtoBuf definition.
2576        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2577            match value {
2578                "UNKNOWN" => Some(Self::Unknown),
2579                "BACKGROUND" => Some(Self::Background),
2580                "USER_INITIATED" => Some(Self::UserInitiated),
2581                _ => None,
2582            }
2583        }
2584    }
2585}
2586#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2587pub struct V8Config {
2588    /// Whether to log the actual content of scripts (e.g. content of the JS file
2589    /// that was compiled to generate code).
2590    /// ATTENTION: This could considerably increase the size of the resuling trace
2591    ///             file.
2592    #[prost(bool, optional, tag = "1")]
2593    pub log_script_sources: ::core::option::Option<bool>,
2594    /// Whether to log the generated code for jitted functions (machine code or
2595    /// bytecode).
2596    /// ATTENTION: This could considerably increase the size of the resuling trace
2597    ///             file.
2598    #[prost(bool, optional, tag = "2")]
2599    pub log_instructions: ::core::option::Option<bool>,
2600}
2601/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
2602/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
2603/// ns-evntrace-event_trace_properties
2604#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2605pub struct EtwConfig {
2606    /// The kernel_flags determines the flags that will be used by the etw tracing
2607    /// session. These kernel flags have been built to expose the useful events
2608    /// captured from the kernel mode only.
2609    #[deprecated]
2610    #[prost(
2611        enumeration = "etw_config::KernelFlag",
2612        repeated,
2613        packed = "false",
2614        tag = "1"
2615    )]
2616    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
2617    /// Provides events relating to the scheduler.
2618    #[prost(string, repeated, tag = "2")]
2619    pub scheduler_provider_events: ::prost::alloc::vec::Vec<
2620        ::prost::alloc::string::String,
2621    >,
2622    /// Provides events relating to the memory manager.
2623    #[prost(string, repeated, tag = "3")]
2624    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2625    /// Provides events relating to file I/O.
2626    #[deprecated]
2627    #[prost(string, repeated, tag = "4")]
2628    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2629    /// Events for which stacks should be collected.
2630    #[prost(string, repeated, tag = "5")]
2631    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2632    /// Provides events relating to disk I/O.
2633    #[deprecated]
2634    #[prost(string, repeated, tag = "6")]
2635    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2636    /// Provides events relating to multiple kinds of IO including disk, cache, and
2637    /// network.
2638    #[prost(string, repeated, tag = "7")]
2639    pub system_io_provider_events: ::prost::alloc::vec::Vec<
2640        ::prost::alloc::string::String,
2641    >,
2642}
2643/// Nested message and enum types in `EtwConfig`.
2644pub mod etw_config {
2645    /// The KernelFlag represent list of kernel flags that we are intrested in.
2646    /// To get a more extensive list run 'xperf -providers k'.
2647    #[derive(
2648        Clone,
2649        Copy,
2650        Debug,
2651        PartialEq,
2652        Eq,
2653        Hash,
2654        PartialOrd,
2655        Ord,
2656        ::prost::Enumeration
2657    )]
2658    #[repr(i32)]
2659    pub enum KernelFlag {
2660        Cswitch = 0,
2661        Dispatcher = 1,
2662    }
2663    impl KernelFlag {
2664        /// String value of the enum field names used in the ProtoBuf definition.
2665        ///
2666        /// The values are not transformed in any way and thus are considered stable
2667        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2668        pub fn as_str_name(&self) -> &'static str {
2669            match self {
2670                Self::Cswitch => "CSWITCH",
2671                Self::Dispatcher => "DISPATCHER",
2672            }
2673        }
2674        /// Creates an enum from field names used in the ProtoBuf definition.
2675        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2676            match value {
2677                "CSWITCH" => Some(Self::Cswitch),
2678                "DISPATCHER" => Some(Self::Dispatcher),
2679                _ => None,
2680            }
2681        }
2682    }
2683}
2684#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2685pub struct ChromiumSystemMetricsConfig {
2686    /// Samples counters every X ms.
2687    #[prost(uint32, optional, tag = "1")]
2688    pub sampling_interval_ms: ::core::option::Option<u32>,
2689}
2690/// Next id: 38
2691#[derive(Clone, PartialEq, ::prost::Message)]
2692pub struct FtraceConfig {
2693    /// Ftrace events to record, example: "sched/sched_switch".
2694    #[prost(string, repeated, tag = "1")]
2695    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2696    /// Android-specific event categories:
2697    #[prost(string, repeated, tag = "2")]
2698    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2699    #[prost(string, repeated, tag = "3")]
2700    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2701    /// Some processes can emit data through atrace or through the perfetto SDK via
2702    /// the "track_event" data source. For these categories, the SDK will be
2703    /// preferred, if possible, for this config.
2704    #[prost(string, repeated, tag = "28")]
2705    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
2706        ::prost::alloc::string::String,
2707    >,
2708    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2709    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2710    /// events for convenience (and the vendor-specific events on top).
2711    /// Introduced in: perfetto v52.
2712    #[prost(bool, optional, tag = "34")]
2713    pub atrace_userspace_only: ::core::option::Option<bool>,
2714    /// Size of each per-cpu kernel ftrace ring buffer.
2715    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2716    /// buffers cannot be resized without pausing recording in the kernel.
2717    #[prost(uint32, optional, tag = "10")]
2718    pub buffer_size_kb: ::core::option::Option<u32>,
2719    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2720    /// implementation to choose a bigger buffer size.
2721    ///
2722    /// Most configs for perfetto v43+ should simply leave both fields unset.
2723    ///
2724    /// If you need a config compatible with a range of perfetto builds and you
2725    /// used to set a non-default buffer_size_kb, consider setting both fields.
2726    /// Example:
2727    ///    buffer_size_kb: 4096
2728    ///    buffer_size_lower_bound: true
2729    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2730    /// On v43+, buffers will be at least 4 MB.
2731    /// In both cases, neither is guaranteed if there are other concurrent
2732    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2733    /// the recording in the kernel.
2734    /// Introduced in: perfetto v43.
2735    #[prost(bool, optional, tag = "27")]
2736    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2737    /// If set, specifies how often the tracing daemon reads from the kernel ring
2738    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2739    /// Leave unset unless you're fine-tuning a local config.
2740    #[prost(uint32, optional, tag = "11")]
2741    pub drain_period_ms: ::core::option::Option<u32>,
2742    /// If set, the tracing daemon will read kernel ring buffers as soon as
2743    /// they're filled past this percentage of occupancy. In other words, a value
2744    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2745    /// half-full. Not guaranteed if there are multiple concurrent tracing
2746    /// sessions.
2747    /// Currently does nothing on Linux kernels below v6.9.
2748    /// Introduced in: perfetto v48.
2749    #[prost(uint32, optional, tag = "29")]
2750    pub drain_buffer_percent: ::core::option::Option<u32>,
2751    #[prost(message, optional, tag = "12")]
2752    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2753    #[prost(message, optional, tag = "22")]
2754    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2755    /// Enables symbol name resolution against /proc/kallsyms.
2756    /// It requires that either traced_probes is running as root or that
2757    /// kptr_restrict has been manually lowered.
2758    /// It does not disclose KASLR, symbol addresses are mangled.
2759    #[prost(bool, optional, tag = "13")]
2760    pub symbolize_ksyms: ::core::option::Option<bool>,
2761    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
2762    pub ksyms_mem_policy: ::core::option::Option<i32>,
2763    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2764    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2765    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2766    /// The historical context for this is the following:
2767    /// - Up to Android S (12), the rss_stat was internally throttled in its
2768    ///    kernel implementation.
2769    /// - A change introduced in the kernels after S has introduced a new
2770    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2771    ///    (hence very spammy).
2772    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2773    ///    need to deal with both cases.
2774    /// For more context: go/rss-stat-throttled.
2775    #[prost(bool, optional, tag = "15")]
2776    pub throttle_rss_stat: ::core::option::Option<bool>,
2777    /// If true, use self-describing proto messages when writing events not known
2778    /// at compile time (aka generic events). Each event bundle will have a set of
2779    /// serialised proto descriptors for events within that bundle.
2780    ///
2781    /// Default if unset:
2782    /// * v53+: true
2783    /// * before v53: false
2784    ///
2785    /// Added in: perfetto v50.
2786    #[prost(bool, optional, tag = "32")]
2787    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2788    /// If true, avoid enabling events that aren't statically known by
2789    /// traced_probes. Otherwise, the default is to emit such events as
2790    /// GenericFtraceEvent protos.
2791    /// Prefer to keep this flag at its default. This was added for Android
2792    /// tracing, where atrace categories and/or atrace HAL requested events can
2793    /// expand to events that aren't of interest to the tracing user.
2794    /// Introduced in: Android T.
2795    #[prost(bool, optional, tag = "16")]
2796    pub disable_generic_events: ::core::option::Option<bool>,
2797    /// The subset of syscalls to record. To record all syscalls, leave this unset
2798    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2799    /// * before perfetto v43, requires the config to also enable
2800    ///    raw_syscalls/sys_{enter,exit}.
2801    /// * perfetto v43+ does the right thing if you set only this field.
2802    /// Example: \["sys_read", "sys_open"\].
2803    /// Introduced in: Android U.
2804    #[prost(string, repeated, tag = "18")]
2805    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2806    /// If true, enable the "function_graph" kernel tracer that emits events
2807    /// whenever a kernel function is entered and exited
2808    /// (funcgraph_entry/funcgraph_exit).
2809    /// Notes on use:
2810    /// * Requires |symbolize_ksyms| for function name resolution.
2811    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2812    ///    set of functions, otherwise the event bandwidth will be too high for
2813    ///    practical use.
2814    /// * The data source might be rejected if there is already a concurrent
2815    ///    ftrace data source that does not use function graph itself, as we do not
2816    ///    support switching kernel tracers mid-trace.
2817    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2818    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2819    ///    "function_graph".
2820    /// Android:
2821    /// * Available only on debuggable builds.
2822    /// * Introduced in: Android U.
2823    #[prost(bool, optional, tag = "19")]
2824    pub enable_function_graph: ::core::option::Option<bool>,
2825    /// Constrains the set of functions traced when |enable_function_graph| is
2826    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2827    /// in which case all matching functions will be traced. See kernel
2828    /// documentation on ftrace "set_ftrace_filter" file for more details.
2829    /// Android:
2830    /// * Available only on debuggable builds.
2831    /// * Introduced in: Android U.
2832    #[prost(string, repeated, tag = "20")]
2833    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2834    /// If |enable_function_graph| is true, trace this set of functions *and* all
2835    /// of its callees. Supports globs. Can be set together with
2836    /// |function_filters|, in which case only callees matching the filter will be
2837    /// traced. If setting both, you most likely want all roots to also be
2838    /// included in |function_filters|.
2839    /// Android:
2840    /// * Available only on debuggable builds.
2841    /// * Introduced in: Android U.
2842    #[prost(string, repeated, tag = "21")]
2843    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2844    /// If |enable_function_graph| is true, only trace the specified
2845    /// number of calls down the stack. Sets the max_graph_depth value
2846    /// in sys/kernel/tracing/
2847    ///
2848    /// Only respected for the first tracing session that enables
2849    /// function_graph tracing.
2850    ///
2851    /// Introduced in: perfetto v51.
2852    /// Supported on: Android 25Q3+.
2853    #[prost(uint32, optional, tag = "33")]
2854    pub function_graph_max_depth: ::core::option::Option<u32>,
2855    /// Ftrace events to record, specific for kprobes and kretprobes
2856    #[prost(message, repeated, tag = "30")]
2857    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2858    /// If true, does not clear kernel ftrace buffers when starting the trace.
2859    /// This makes sense only if this is the first ftrace data source instance
2860    /// created after the daemon has been started. Can be useful for gathering boot
2861    /// traces, if ftrace has been separately configured (e.g. via kernel
2862    /// commandline).
2863    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2864    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2865    /// anything besides ftrace. Otherwise timestamps might be skewed.
2866    #[prost(bool, optional, tag = "23")]
2867    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2868    /// If true, overrides the default timestamp clock and uses a raw hardware
2869    /// based monotonic clock for getting timestamps.
2870    /// * Introduced in: Android U.
2871    #[prost(bool, optional, tag = "24")]
2872    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2873    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2874    /// for event recording. Normally, this means
2875    /// `/sys/kernel/tracing/instances/$instance_name`.
2876    ///
2877    /// Names "hyp" and "hypervisor" are reserved.
2878    ///
2879    /// The instance must already exist, the tracing daemon *will not* create it
2880    /// for you as it typically doesn't have such permissions.
2881    /// Only a subset of features is guaranteed to work with non-default instances,
2882    /// at the time of writing:
2883    ///   * ftrace_events
2884    ///   * buffer_size_kb
2885    #[prost(string, optional, tag = "25")]
2886    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2887    /// For perfetto developer use. If true and on a debuggable android build,
2888    /// serialise raw tracing pages that the implementation cannot parse.
2889    #[prost(bool, optional, tag = "31")]
2890    pub debug_ftrace_abi: ::core::option::Option<bool>,
2891    /// Filter ftrace events by Thread ID (TID).
2892    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2893    ///
2894    /// Note: this is an exclusive feature, see:
2895    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2896    ///
2897    /// Introduced in: perfetto v52.
2898    /// Supported on: Android 25Q3+.
2899    #[prost(uint32, repeated, packed = "false", tag = "35")]
2900    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2901    #[prost(message, repeated, tag = "36")]
2902    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2903    /// This mask restricts tracing to a specific set of CPUs using a
2904    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2905    /// 32-bit chunk of the CPU mask.
2906    ///
2907    /// The chunks are ordered from high CPUs to low CPUs (left to right):
2908    ///    - Rightmost chunk: CPUs 0-31
2909    ///    - 2nd chunk from right: CPUs 32-63
2910    ///    - ...and so on.
2911    ///
2912    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
2913    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
2914    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
2915    /// chunk0 to 0-31.
2916    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
2917    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
2918    ///
2919    /// Note: This is an exclusive feature, see:
2920    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2921    ///
2922    /// Introduced in: perfetto v52.
2923    /// Supported on: Android 25Q3+.
2924    #[prost(string, optional, tag = "37")]
2925    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
2926    /// No-op in perfetto v28+. Name preserved because of existing references in
2927    /// textproto configs.
2928    #[deprecated]
2929    #[prost(bool, optional, tag = "14")]
2930    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
2931}
2932/// Nested message and enum types in `FtraceConfig`.
2933pub mod ftrace_config {
2934    /// Configuration for compact encoding of scheduler events. When enabled (and
2935    /// recording the relevant ftrace events), specific high-volume events are
2936    /// encoded in a denser format than normal.
2937    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2938    pub struct CompactSchedConfig {
2939        /// If true, and sched_switch or sched_waking ftrace events are enabled,
2940        /// record those events in the compact format.
2941        ///
2942        /// If the field is unset, the default is:
2943        /// * perfetto v42.0+: enabled
2944        /// * before: disabled
2945        #[prost(bool, optional, tag = "1")]
2946        pub enabled: ::core::option::Option<bool>,
2947    }
2948    /// Optional filter for "ftrace/print" events.
2949    ///
2950    /// The filter consists of multiple rules. As soon as a rule matches (the rules
2951    /// are processed in order), its `allow` field will be used as the outcome: if
2952    /// `allow` is true, the event will be included in the trace, otherwise it will
2953    /// be discarded. If an event does not match any rule, it will be allowed by
2954    /// default (a rule with an empty prefix and allow=false, disallows everything
2955    /// by default).
2956    #[derive(Clone, PartialEq, ::prost::Message)]
2957    pub struct PrintFilter {
2958        #[prost(message, repeated, tag = "1")]
2959        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
2960    }
2961    /// Nested message and enum types in `PrintFilter`.
2962    pub mod print_filter {
2963        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2964        pub struct Rule {
2965            #[prost(bool, optional, tag = "2")]
2966            pub allow: ::core::option::Option<bool>,
2967            #[prost(oneof = "rule::Match", tags = "1, 3")]
2968            pub r#match: ::core::option::Option<rule::Match>,
2969        }
2970        /// Nested message and enum types in `Rule`.
2971        pub mod rule {
2972            /// Matches an atrace message of the form:
2973            /// <type>|pid|<prefix>...
2974            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2975            pub struct AtraceMessage {
2976                #[prost(string, optional, tag = "1")]
2977                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
2978                #[prost(string, optional, tag = "2")]
2979                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2980            }
2981            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2982            pub enum Match {
2983                /// This rule matches if `prefix` matches exactly with the beginning of
2984                /// the "ftrace/print" "buf" field.
2985                #[prost(string, tag = "1")]
2986                Prefix(::prost::alloc::string::String),
2987                /// This rule matches if the "buf" field contains an atrace-style print
2988                /// message as specified in `atrace_msg`.
2989                #[prost(message, tag = "3")]
2990                AtraceMsg(AtraceMessage),
2991            }
2992        }
2993    }
2994    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2995    pub struct KprobeEvent {
2996        /// Kernel function name to attach to, for example "fuse_file_write_iter"
2997        #[prost(string, optional, tag = "1")]
2998        pub probe: ::core::option::Option<::prost::alloc::string::String>,
2999        #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
3000        pub r#type: ::core::option::Option<i32>,
3001    }
3002    /// Nested message and enum types in `KprobeEvent`.
3003    pub mod kprobe_event {
3004        #[derive(
3005            Clone,
3006            Copy,
3007            Debug,
3008            PartialEq,
3009            Eq,
3010            Hash,
3011            PartialOrd,
3012            Ord,
3013            ::prost::Enumeration
3014        )]
3015        #[repr(i32)]
3016        pub enum KprobeType {
3017            Unknown = 0,
3018            Kprobe = 1,
3019            Kretprobe = 2,
3020            Both = 3,
3021        }
3022        impl KprobeType {
3023            /// String value of the enum field names used in the ProtoBuf definition.
3024            ///
3025            /// The values are not transformed in any way and thus are considered stable
3026            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3027            pub fn as_str_name(&self) -> &'static str {
3028                match self {
3029                    Self::Unknown => "KPROBE_TYPE_UNKNOWN",
3030                    Self::Kprobe => "KPROBE_TYPE_KPROBE",
3031                    Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
3032                    Self::Both => "KPROBE_TYPE_BOTH",
3033                }
3034            }
3035            /// Creates an enum from field names used in the ProtoBuf definition.
3036            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3037                match value {
3038                    "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
3039                    "KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
3040                    "KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
3041                    "KPROBE_TYPE_BOTH" => Some(Self::Both),
3042                    _ => None,
3043                }
3044            }
3045        }
3046    }
3047    /// Tracefs options to set directly in the tracefs instance. This is a very
3048    /// niche feature since almost all of the options deal with formatting textual
3049    /// output (the /trace file), which perfetto doesn't use.
3050    ///
3051    /// The options with a known use-case:
3052    /// * event-fork: when using `tids_to_trace` above, the kernel will
3053    ///    automatically add newly spawned descendant threads to the set of TIDs.
3054    ///
3055    /// Full list of options is available at
3056    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
3057    ///
3058    /// Note: this is an exclusive feature, see:
3059    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
3060    ///
3061    /// Introduced in: perfetto v52.
3062    /// Supported on: Android 25Q3+.
3063    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3064    pub struct TracefsOption {
3065        /// The name of the tracefs option as found in tracefs/trace_options (without
3066        /// the "no" prefix).
3067        #[prost(string, optional, tag = "1")]
3068        pub name: ::core::option::Option<::prost::alloc::string::String>,
3069        #[prost(enumeration = "tracefs_option::State", optional, tag = "2")]
3070        pub state: ::core::option::Option<i32>,
3071    }
3072    /// Nested message and enum types in `TracefsOption`.
3073    pub mod tracefs_option {
3074        #[derive(
3075            Clone,
3076            Copy,
3077            Debug,
3078            PartialEq,
3079            Eq,
3080            Hash,
3081            PartialOrd,
3082            Ord,
3083            ::prost::Enumeration
3084        )]
3085        #[repr(i32)]
3086        pub enum State {
3087            Unknown = 0,
3088            Enabled = 1,
3089            Disabled = 2,
3090        }
3091        impl State {
3092            /// String value of the enum field names used in the ProtoBuf definition.
3093            ///
3094            /// The values are not transformed in any way and thus are considered stable
3095            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3096            pub fn as_str_name(&self) -> &'static str {
3097                match self {
3098                    Self::Unknown => "STATE_UNKNOWN",
3099                    Self::Enabled => "STATE_ENABLED",
3100                    Self::Disabled => "STATE_DISABLED",
3101                }
3102            }
3103            /// Creates an enum from field names used in the ProtoBuf definition.
3104            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3105                match value {
3106                    "STATE_UNKNOWN" => Some(Self::Unknown),
3107                    "STATE_ENABLED" => Some(Self::Enabled),
3108                    "STATE_DISABLED" => Some(Self::Disabled),
3109                    _ => None,
3110                }
3111            }
3112        }
3113    }
3114    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
3115    /// should keep the symbol map in memory (and reuse it for future tracing
3116    /// sessions) or clear it (saving memory) and re-create it on each tracing
3117    /// session (wasting cpu and wall time).
3118    /// The tradeoff is roughly:
3119    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
3120    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
3121    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
3122    #[derive(
3123        Clone,
3124        Copy,
3125        Debug,
3126        PartialEq,
3127        Eq,
3128        Hash,
3129        PartialOrd,
3130        Ord,
3131        ::prost::Enumeration
3132    )]
3133    #[repr(i32)]
3134    pub enum KsymsMemPolicy {
3135        KsymsUnspecified = 0,
3136        KsymsCleanupOnStop = 1,
3137        KsymsRetain = 2,
3138    }
3139    impl KsymsMemPolicy {
3140        /// String value of the enum field names used in the ProtoBuf definition.
3141        ///
3142        /// The values are not transformed in any way and thus are considered stable
3143        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3144        pub fn as_str_name(&self) -> &'static str {
3145            match self {
3146                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
3147                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
3148                Self::KsymsRetain => "KSYMS_RETAIN",
3149            }
3150        }
3151        /// Creates an enum from field names used in the ProtoBuf definition.
3152        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3153            match value {
3154                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
3155                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
3156                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
3157                _ => None,
3158            }
3159        }
3160    }
3161}
3162#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3163pub struct FrozenFtraceConfig {
3164    /// The instance name which stores the previous boot ftrace data. Required.
3165    #[prost(string, optional, tag = "1")]
3166    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
3167}
3168#[derive(Clone, PartialEq, ::prost::Message)]
3169pub struct GpuCounterConfig {
3170    /// Desired sampling interval for counters.
3171    #[prost(uint64, optional, tag = "1")]
3172    pub counter_period_ns: ::core::option::Option<u64>,
3173    /// List of counter IDs to be sampled.
3174    #[prost(uint32, repeated, packed = "false", tag = "2")]
3175    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
3176    /// List of counter names to be sampled. Requires producer support; check
3177    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
3178    /// Glob patterns may be used to match multiple counters by name; check
3179    /// GpuCounterDescriptor.supports_counter_name_globs for support.
3180    #[prost(string, repeated, tag = "6")]
3181    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3182    /// Fix gpu clock rate during trace session.
3183    #[prost(bool, optional, tag = "4")]
3184    pub fix_gpu_clock: ::core::option::Option<bool>,
3185    /// Sample counters by instrumenting command buffers.
3186    #[prost(oneof = "gpu_counter_config::InstrumentedSamplingMode", tags = "3, 5")]
3187    pub instrumented_sampling_mode: ::core::option::Option<
3188        gpu_counter_config::InstrumentedSamplingMode,
3189    >,
3190}
3191/// Nested message and enum types in `GpuCounterConfig`.
3192pub mod gpu_counter_config {
3193    /// Configuration for sampling counters by instrumenting command buffers.
3194    ///
3195    /// When instrumented_sampling_config is used (instead of the
3196    /// instrumented_sampling bool), the following steps determine whether
3197    /// instrumented counters are enabled for a given GPU activity:
3198    ///
3199    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
3200    ///     activity must match at least one filter. If empty, all activities
3201    ///     pass this step.
3202    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
3203    ///     activity must fall within a matching TX range. Activities in TX
3204    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
3205    ///     take precedence over includes). If both are empty, all activities
3206    ///     pass this step.
3207    /// 3. Range-based sampling: If activity_ranges is non-empty, only
3208    ///     activities within the specified skip/count ranges are instrumented.
3209    ///     If empty, all activities that passed the previous steps are
3210    ///     instrumented.
3211    #[derive(Clone, PartialEq, ::prost::Message)]
3212    pub struct InstrumentedSamplingConfig {
3213        /// GPU activity name filters. An activity matches if it matches any filter.
3214        #[prost(message, repeated, tag = "3")]
3215        pub activity_name_filters: ::prost::alloc::vec::Vec<
3216            instrumented_sampling_config::ActivityNameFilter,
3217        >,
3218        /// Glob patterns to use for including GPU activities in TX ranges. TX
3219        /// ranges are in-process annotations that mark different sections of GPU
3220        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
3221        /// activity is included if any range in its nesting hierarchy matches.
3222        /// Only activities that fall within a matching TX range will be
3223        /// instrumented.
3224        #[prost(string, repeated, tag = "6")]
3225        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<
3226            ::prost::alloc::string::String,
3227        >,
3228        /// Glob patterns to use for excluding GPU activities from TX ranges.
3229        /// TX ranges can be nested, and an activity is excluded if any range
3230        /// in its nesting hierarchy matches. Excludes take precedence over
3231        /// includes.
3232        #[prost(string, repeated, tag = "7")]
3233        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<
3234            ::prost::alloc::string::String,
3235        >,
3236        /// Ranges of GPU activities to instrument. Applied after activity name
3237        /// and TX range filters. If empty, all activities that passed the
3238        /// previous filters are instrumented.
3239        #[prost(message, repeated, tag = "5")]
3240        pub activity_ranges: ::prost::alloc::vec::Vec<
3241            instrumented_sampling_config::ActivityRange,
3242        >,
3243    }
3244    /// Nested message and enum types in `InstrumentedSamplingConfig`.
3245    pub mod instrumented_sampling_config {
3246        /// Filters GPU activities by name. Each filter specifies a glob pattern
3247        /// and the basis for matching (mangled or demangled kernel name).
3248        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3249        pub struct ActivityNameFilter {
3250            /// required. Glob pattern to use for GPU activity name filtering.
3251            #[prost(string, optional, tag = "1")]
3252            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
3253            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
3254            /// specified.
3255            #[prost(enumeration = "activity_name_filter::NameBase", optional, tag = "2")]
3256            pub name_base: ::core::option::Option<i32>,
3257        }
3258        /// Nested message and enum types in `ActivityNameFilter`.
3259        pub mod activity_name_filter {
3260            #[derive(
3261                Clone,
3262                Copy,
3263                Debug,
3264                PartialEq,
3265                Eq,
3266                Hash,
3267                PartialOrd,
3268                Ord,
3269                ::prost::Enumeration
3270            )]
3271            #[repr(i32)]
3272            pub enum NameBase {
3273                /// Match against the mangled (compiler-encoded) kernel name.
3274                /// Example: for a kernel whose demangled name is
3275                /// "matmul(float*,int,int)", the mangled name might be
3276                /// "_Z6matmulPfii". The glob pattern is matched against this
3277                /// mangled form.
3278                MangledKernelName = 0,
3279                /// Match against the fully demangled kernel name, including
3280                /// parameters, templates, and qualifiers.
3281                /// Example: "matmul(float*,int,int)". The glob pattern is
3282                /// matched against this full demangled form.
3283                DemangledKernelName = 1,
3284                /// Match against only the function name portion of the
3285                /// demangled kernel name, without parameters, templates,
3286                /// return types, or namespaces.
3287                /// Example: "matmul". The glob pattern is matched against
3288                /// just the bare function name.
3289                FunctionName = 2,
3290            }
3291            impl NameBase {
3292                /// String value of the enum field names used in the ProtoBuf definition.
3293                ///
3294                /// The values are not transformed in any way and thus are considered stable
3295                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3296                pub fn as_str_name(&self) -> &'static str {
3297                    match self {
3298                        Self::MangledKernelName => "MANGLED_KERNEL_NAME",
3299                        Self::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
3300                        Self::FunctionName => "FUNCTION_NAME",
3301                    }
3302                }
3303                /// Creates an enum from field names used in the ProtoBuf definition.
3304                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3305                    match value {
3306                        "MANGLED_KERNEL_NAME" => Some(Self::MangledKernelName),
3307                        "DEMANGLED_KERNEL_NAME" => Some(Self::DemangledKernelName),
3308                        "FUNCTION_NAME" => Some(Self::FunctionName),
3309                        _ => None,
3310                    }
3311                }
3312            }
3313        }
3314        /// Defines a range of GPU activities to instrument.
3315        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3316        pub struct ActivityRange {
3317            /// Number of GPU activities to skip before starting to instrument
3318            /// command buffers. Defaults to 0 if not specified.
3319            #[prost(uint32, optional, tag = "1")]
3320            pub skip: ::core::option::Option<u32>,
3321            /// Limit for the number of GPU activities to sample counters for by
3322            /// instrumenting command buffers. Defaults to UINT32_MAX (all
3323            /// remaining activities) if not specified.
3324            #[prost(uint32, optional, tag = "2")]
3325            pub count: ::core::option::Option<u32>,
3326        }
3327    }
3328    /// Sample counters by instrumenting command buffers.
3329    #[derive(Clone, PartialEq, ::prost::Oneof)]
3330    pub enum InstrumentedSamplingMode {
3331        #[prost(bool, tag = "3")]
3332        InstrumentedSampling(bool),
3333        #[prost(message, tag = "5")]
3334        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
3335    }
3336}
3337#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3338pub struct VulkanMemoryConfig {
3339    /// Tracking driver memory usage events
3340    #[prost(bool, optional, tag = "1")]
3341    pub track_driver_memory_usage: ::core::option::Option<bool>,
3342    /// Tracking device memory usage events
3343    #[prost(bool, optional, tag = "2")]
3344    pub track_device_memory_usage: ::core::option::Option<bool>,
3345}
3346#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3347pub struct GpuRenderStagesConfig {
3348    /// Enable to separate the color and depth/stencil load and store stages
3349    /// into a separate stages. If disabled, the depth/stencil load and store
3350    /// stages will be combined.  Disabled by default. This option has no effect if
3351    /// Low Overhead mode is enabled.
3352    #[prost(bool, optional, tag = "1")]
3353    pub full_loadstore: ::core::option::Option<bool>,
3354    /// Use the low overhead mode for traces. In this mode render stages are
3355    /// combined into a single workload stage. This provides less granular data but
3356    /// induces minimal GPU overhead. Disabled by default.
3357    #[prost(bool, optional, tag = "2")]
3358    pub low_overhead: ::core::option::Option<bool>,
3359    /// Trace metrics to capture for each render stage
3360    #[prost(string, repeated, tag = "3")]
3361    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3362}
3363/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
3364/// systems.
3365#[derive(Clone, PartialEq, ::prost::Message)]
3366pub struct InodeFileConfig {
3367    /// How long to pause between batches.
3368    #[prost(uint32, optional, tag = "1")]
3369    pub scan_interval_ms: ::core::option::Option<u32>,
3370    /// How long to wait before the first scan in order to accumulate inodes.
3371    #[prost(uint32, optional, tag = "2")]
3372    pub scan_delay_ms: ::core::option::Option<u32>,
3373    /// How many inodes to scan in one batch.
3374    #[prost(uint32, optional, tag = "3")]
3375    pub scan_batch_size: ::core::option::Option<u32>,
3376    /// Do not scan for inodes not found in the static map.
3377    #[prost(bool, optional, tag = "4")]
3378    pub do_not_scan: ::core::option::Option<bool>,
3379    /// If non-empty, only scan inodes corresponding to block devices named in
3380    /// this list.
3381    #[prost(string, repeated, tag = "5")]
3382    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3383    /// When encountering an inode belonging to a block device corresponding
3384    /// to one of the mount points in this map, scan its scan_roots instead.
3385    #[prost(message, repeated, tag = "6")]
3386    pub mount_point_mapping: ::prost::alloc::vec::Vec<
3387        inode_file_config::MountPointMappingEntry,
3388    >,
3389}
3390/// Nested message and enum types in `InodeFileConfig`.
3391pub mod inode_file_config {
3392    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3393    pub struct MountPointMappingEntry {
3394        #[prost(string, optional, tag = "1")]
3395        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
3396        #[prost(string, repeated, tag = "2")]
3397        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3398    }
3399}
3400#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3401pub struct ConsoleConfig {
3402    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
3403    pub output: ::core::option::Option<i32>,
3404    #[prost(bool, optional, tag = "2")]
3405    pub enable_colors: ::core::option::Option<bool>,
3406}
3407/// Nested message and enum types in `ConsoleConfig`.
3408pub mod console_config {
3409    #[derive(
3410        Clone,
3411        Copy,
3412        Debug,
3413        PartialEq,
3414        Eq,
3415        Hash,
3416        PartialOrd,
3417        Ord,
3418        ::prost::Enumeration
3419    )]
3420    #[repr(i32)]
3421    pub enum Output {
3422        Unspecified = 0,
3423        Stdout = 1,
3424        Stderr = 2,
3425    }
3426    impl Output {
3427        /// String value of the enum field names used in the ProtoBuf definition.
3428        ///
3429        /// The values are not transformed in any way and thus are considered stable
3430        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3431        pub fn as_str_name(&self) -> &'static str {
3432            match self {
3433                Self::Unspecified => "OUTPUT_UNSPECIFIED",
3434                Self::Stdout => "OUTPUT_STDOUT",
3435                Self::Stderr => "OUTPUT_STDERR",
3436            }
3437        }
3438        /// Creates an enum from field names used in the ProtoBuf definition.
3439        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3440            match value {
3441                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
3442                "OUTPUT_STDOUT" => Some(Self::Stdout),
3443                "OUTPUT_STDERR" => Some(Self::Stderr),
3444                _ => None,
3445            }
3446        }
3447    }
3448}
3449/// Configuration for trace packet interception. Used for diverting trace data to
3450/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
3451/// Perfetto SDK.
3452#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3453pub struct InterceptorConfig {
3454    /// Matches the name given to RegisterInterceptor().
3455    #[prost(string, optional, tag = "1")]
3456    pub name: ::core::option::Option<::prost::alloc::string::String>,
3457    #[prost(message, optional, tag = "100")]
3458    pub console_config: ::core::option::Option<ConsoleConfig>,
3459}
3460#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3461pub struct AndroidPowerConfig {
3462    #[prost(uint32, optional, tag = "1")]
3463    pub battery_poll_ms: ::core::option::Option<u32>,
3464    #[prost(
3465        enumeration = "android_power_config::BatteryCounters",
3466        repeated,
3467        packed = "false",
3468        tag = "2"
3469    )]
3470    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
3471    /// Where available enables per-power-rail measurements.
3472    #[prost(bool, optional, tag = "3")]
3473    pub collect_power_rails: ::core::option::Option<bool>,
3474    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
3475    /// Available from Android S.
3476    #[prost(bool, optional, tag = "4")]
3477    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
3478    /// Provides a breakdown of time in state for various subsystems.
3479    /// Available from Android U.
3480    #[prost(bool, optional, tag = "5")]
3481    pub collect_entity_state_residency: ::core::option::Option<bool>,
3482}
3483/// Nested message and enum types in `AndroidPowerConfig`.
3484pub mod android_power_config {
3485    #[derive(
3486        Clone,
3487        Copy,
3488        Debug,
3489        PartialEq,
3490        Eq,
3491        Hash,
3492        PartialOrd,
3493        Ord,
3494        ::prost::Enumeration
3495    )]
3496    #[repr(i32)]
3497    pub enum BatteryCounters {
3498        BatteryCounterUnspecified = 0,
3499        /// Coulomb counter.
3500        BatteryCounterCharge = 1,
3501        /// Charge (%).
3502        BatteryCounterCapacityPercent = 2,
3503        /// Instantaneous current.
3504        BatteryCounterCurrent = 3,
3505        /// Avg current.
3506        BatteryCounterCurrentAvg = 4,
3507        /// Instantaneous voltage.
3508        BatteryCounterVoltage = 5,
3509    }
3510    impl BatteryCounters {
3511        /// String value of the enum field names used in the ProtoBuf definition.
3512        ///
3513        /// The values are not transformed in any way and thus are considered stable
3514        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3515        pub fn as_str_name(&self) -> &'static str {
3516            match self {
3517                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
3518                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
3519                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
3520                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
3521                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
3522                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
3523            }
3524        }
3525        /// Creates an enum from field names used in the ProtoBuf definition.
3526        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3527            match value {
3528                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
3529                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
3530                "BATTERY_COUNTER_CAPACITY_PERCENT" => {
3531                    Some(Self::BatteryCounterCapacityPercent)
3532                }
3533                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
3534                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
3535                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
3536                _ => None,
3537            }
3538        }
3539    }
3540}
3541#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3542pub struct ProtoVmConfig {
3543    #[prost(uint32, optional, tag = "1")]
3544    pub memory_limit_kb: ::core::option::Option<u32>,
3545}
3546/// This enum is obtained by post-processing
3547/// AOSP/frameworks/proto_logging/stats/atoms.proto through
3548/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
3549/// enum value for each proto field defined in the upstream atoms.proto.
3550#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3551#[repr(i32)]
3552pub enum AtomId {
3553    AtomUnspecified = 0,
3554    AtomBleScanStateChanged = 2,
3555    AtomProcessStateChanged = 3,
3556    AtomBleScanResultReceived = 4,
3557    AtomSensorStateChanged = 5,
3558    AtomGpsScanStateChanged = 6,
3559    AtomSyncStateChanged = 7,
3560    AtomScheduledJobStateChanged = 8,
3561    AtomScreenBrightnessChanged = 9,
3562    AtomWakelockStateChanged = 10,
3563    AtomLongPartialWakelockStateChanged = 11,
3564    AtomMobileRadioPowerStateChanged = 12,
3565    AtomWifiRadioPowerStateChanged = 13,
3566    AtomActivityManagerSleepStateChanged = 14,
3567    AtomMemoryFactorStateChanged = 15,
3568    AtomExcessiveCpuUsageReported = 16,
3569    AtomCachedKillReported = 17,
3570    AtomProcessMemoryStatReported = 18,
3571    AtomLauncherEvent = 19,
3572    AtomBatterySaverModeStateChanged = 20,
3573    AtomDeviceIdleModeStateChanged = 21,
3574    AtomDeviceIdlingModeStateChanged = 22,
3575    AtomAudioStateChanged = 23,
3576    AtomMediaCodecStateChanged = 24,
3577    AtomCameraStateChanged = 25,
3578    AtomFlashlightStateChanged = 26,
3579    AtomUidProcessStateChanged = 27,
3580    AtomProcessLifeCycleStateChanged = 28,
3581    AtomScreenStateChanged = 29,
3582    AtomBatteryLevelChanged = 30,
3583    AtomChargingStateChanged = 31,
3584    AtomPluggedStateChanged = 32,
3585    AtomInteractiveStateChanged = 33,
3586    AtomTouchEventReported = 34,
3587    AtomWakeupAlarmOccurred = 35,
3588    AtomKernelWakeupReported = 36,
3589    AtomWifiLockStateChanged = 37,
3590    AtomWifiSignalStrengthChanged = 38,
3591    AtomWifiScanStateChanged = 39,
3592    AtomPhoneSignalStrengthChanged = 40,
3593    AtomSettingChanged = 41,
3594    AtomActivityForegroundStateChanged = 42,
3595    AtomIsolatedUidChanged = 43,
3596    AtomPacketWakeupOccurred = 44,
3597    AtomWallClockTimeShifted = 45,
3598    AtomAnomalyDetected = 46,
3599    AtomAppBreadcrumbReported = 47,
3600    AtomAppStartOccurred = 48,
3601    AtomAppStartCanceled = 49,
3602    AtomAppStartFullyDrawn = 50,
3603    AtomLmkKillOccurred = 51,
3604    AtomPictureInPictureStateChanged = 52,
3605    AtomWifiMulticastLockStateChanged = 53,
3606    AtomAppStartMemoryStateCaptured = 55,
3607    AtomShutdownSequenceReported = 56,
3608    AtomBootSequenceReported = 57,
3609    AtomOverlayStateChanged = 59,
3610    AtomForegroundServiceStateChanged = 60,
3611    AtomCallStateChanged = 61,
3612    AtomKeyguardStateChanged = 62,
3613    AtomKeyguardBouncerStateChanged = 63,
3614    AtomKeyguardBouncerPasswordEntered = 64,
3615    AtomAppDied = 65,
3616    AtomResourceConfigurationChanged = 66,
3617    AtomBluetoothEnabledStateChanged = 67,
3618    AtomBluetoothConnectionStateChanged = 68,
3619    AtomGpsSignalQualityChanged = 69,
3620    AtomUsbConnectorStateChanged = 70,
3621    AtomSpeakerImpedanceReported = 71,
3622    AtomHardwareFailed = 72,
3623    AtomPhysicalDropDetected = 73,
3624    AtomChargeCyclesReported = 74,
3625    AtomMobileConnectionStateChanged = 75,
3626    AtomMobileRadioTechnologyChanged = 76,
3627    AtomUsbDeviceAttached = 77,
3628    AtomAppCrashOccurred = 78,
3629    AtomAnrOccurred = 79,
3630    AtomWtfOccurred = 80,
3631    AtomLowMemReported = 81,
3632    AtomGenericAtom = 82,
3633    AtomVibratorStateChanged = 84,
3634    AtomDeferredJobStatsReported = 85,
3635    AtomThermalThrottling = 86,
3636    AtomBiometricAcquired = 87,
3637    AtomBiometricAuthenticated = 88,
3638    AtomBiometricErrorOccurred = 89,
3639    AtomUiEventReported = 90,
3640    AtomBatteryHealthSnapshot = 91,
3641    AtomSlowIo = 92,
3642    AtomBatteryCausedShutdown = 93,
3643    AtomPhoneServiceStateChanged = 94,
3644    AtomPhoneStateChanged = 95,
3645    AtomUserRestrictionChanged = 96,
3646    AtomSettingsUiChanged = 97,
3647    AtomConnectivityStateChanged = 98,
3648    AtomServiceStateChanged = 99,
3649    AtomServiceLaunchReported = 100,
3650    AtomFlagFlipUpdateOccurred = 101,
3651    AtomBinaryPushStateChanged = 102,
3652    AtomDevicePolicyEvent = 103,
3653    AtomDocsUiFileOpCanceled = 104,
3654    AtomDocsUiFileOpCopyMoveModeReported = 105,
3655    AtomDocsUiFileOpFailure = 106,
3656    AtomDocsUiProviderFileOp = 107,
3657    AtomDocsUiInvalidScopedAccessRequest = 108,
3658    AtomDocsUiLaunchReported = 109,
3659    AtomDocsUiRootVisited = 110,
3660    AtomDocsUiStartupMs = 111,
3661    AtomDocsUiUserActionReported = 112,
3662    AtomWifiEnabledStateChanged = 113,
3663    AtomWifiRunningStateChanged = 114,
3664    AtomAppCompacted = 115,
3665    AtomNetworkDnsEventReported = 116,
3666    AtomDocsUiPickerLaunchedFromReported = 117,
3667    AtomDocsUiPickResultReported = 118,
3668    AtomDocsUiSearchModeReported = 119,
3669    AtomDocsUiSearchTypeReported = 120,
3670    AtomDataStallEvent = 121,
3671    AtomRescuePartyResetReported = 122,
3672    AtomSignedConfigReported = 123,
3673    AtomGnssNiEventReported = 124,
3674    AtomBluetoothLinkLayerConnectionEvent = 125,
3675    AtomBluetoothAclConnectionStateChanged = 126,
3676    AtomBluetoothScoConnectionStateChanged = 127,
3677    AtomAppDowngraded = 128,
3678    AtomAppOptimizedAfterDowngraded = 129,
3679    AtomLowStorageStateChanged = 130,
3680    AtomGnssNfwNotificationReported = 131,
3681    AtomGnssConfigurationReported = 132,
3682    AtomUsbPortOverheatEventReported = 133,
3683    AtomNfcErrorOccurred = 134,
3684    AtomNfcStateChanged = 135,
3685    AtomNfcBeamOccurred = 136,
3686    AtomNfcCardemulationOccurred = 137,
3687    AtomNfcTagOccurred = 138,
3688    AtomNfcHceTransactionOccurred = 139,
3689    AtomSeStateChanged = 140,
3690    AtomSeOmapiReported = 141,
3691    AtomBroadcastDispatchLatencyReported = 142,
3692    AtomAttentionManagerServiceResultReported = 143,
3693    AtomAdbConnectionChanged = 144,
3694    AtomSpeechDspStatReported = 145,
3695    AtomUsbContaminantReported = 146,
3696    AtomWatchdogRollbackOccurred = 147,
3697    AtomBiometricSystemHealthIssueDetected = 148,
3698    AtomBubbleUiChanged = 149,
3699    AtomScheduledJobConstraintChanged = 150,
3700    AtomBluetoothActiveDeviceChanged = 151,
3701    AtomBluetoothA2dpPlaybackStateChanged = 152,
3702    AtomBluetoothA2dpCodecConfigChanged = 153,
3703    AtomBluetoothA2dpCodecCapabilityChanged = 154,
3704    AtomBluetoothA2dpAudioUnderrunReported = 155,
3705    AtomBluetoothA2dpAudioOverrunReported = 156,
3706    AtomBluetoothDeviceRssiReported = 157,
3707    AtomBluetoothDeviceFailedContactCounterReported = 158,
3708    AtomBluetoothDeviceTxPowerLevelReported = 159,
3709    AtomBluetoothHciTimeoutReported = 160,
3710    AtomBluetoothQualityReportReported = 161,
3711    AtomBluetoothDeviceInfoReported = 162,
3712    AtomBluetoothRemoteVersionInfoReported = 163,
3713    AtomBluetoothSdpAttributeReported = 164,
3714    AtomBluetoothBondStateChanged = 165,
3715    AtomBluetoothClassicPairingEventReported = 166,
3716    AtomBluetoothSmpPairingEventReported = 167,
3717    AtomScreenTimeoutExtensionReported = 168,
3718    AtomProcessStartTime = 169,
3719    AtomPermissionGrantRequestResultReported = 170,
3720    AtomBluetoothSocketConnectionStateChanged = 171,
3721    AtomDeviceIdentifierAccessDenied = 172,
3722    AtomBubbleDeveloperErrorReported = 173,
3723    AtomAssistGestureStageReported = 174,
3724    AtomAssistGestureFeedbackReported = 175,
3725    AtomAssistGestureProgressReported = 176,
3726    AtomTouchGestureClassified = 177,
3727    AtomHiddenApiUsed = 178,
3728    AtomStyleUiChanged = 179,
3729    AtomPrivacyIndicatorsInteracted = 180,
3730    AtomAppInstallOnExternalStorageReported = 181,
3731    AtomNetworkStackReported = 182,
3732    AtomAppMovedStorageReported = 183,
3733    AtomBiometricEnrolled = 184,
3734    AtomSystemServerWatchdogOccurred = 185,
3735    AtomTombStoneOccurred = 186,
3736    AtomBluetoothClassOfDeviceReported = 187,
3737    AtomIntelligenceEventReported = 188,
3738    AtomThermalThrottlingSeverityStateChanged = 189,
3739    AtomRoleRequestResultReported = 190,
3740    AtomMediametricsAudiopolicyReported = 191,
3741    AtomMediametricsAudiorecordReported = 192,
3742    AtomMediametricsAudiothreadReported = 193,
3743    AtomMediametricsAudiotrackReported = 194,
3744    AtomMediametricsCodecReported = 195,
3745    AtomMediametricsDrmWidevineReported = 196,
3746    AtomMediametricsExtractorReported = 197,
3747    AtomMediametricsMediadrmReported = 198,
3748    AtomMediametricsNuplayerReported = 199,
3749    AtomMediametricsRecorderReported = 200,
3750    AtomMediametricsDrmmanagerReported = 201,
3751    AtomCarPowerStateChanged = 203,
3752    AtomGarageModeInfo = 204,
3753    AtomTestAtomReported = 205,
3754    AtomContentCaptureCallerMismatchReported = 206,
3755    AtomContentCaptureServiceEvents = 207,
3756    AtomContentCaptureSessionEvents = 208,
3757    AtomContentCaptureFlushed = 209,
3758    AtomLocationManagerApiUsageReported = 210,
3759    AtomReviewPermissionsFragmentResultReported = 211,
3760    AtomRuntimePermissionsUpgradeResult = 212,
3761    AtomGrantPermissionsActivityButtonActions = 213,
3762    AtomLocationAccessCheckNotificationAction = 214,
3763    AtomAppPermissionFragmentActionReported = 215,
3764    AtomAppPermissionFragmentViewed = 216,
3765    AtomAppPermissionsFragmentViewed = 217,
3766    AtomPermissionAppsFragmentViewed = 218,
3767    AtomTextSelectionEvent = 219,
3768    AtomTextLinkifyEvent = 220,
3769    AtomConversationActionsEvent = 221,
3770    AtomLanguageDetectionEvent = 222,
3771    AtomExclusionRectStateChanged = 223,
3772    AtomBackGestureReportedReported = 224,
3773    AtomUpdateEngineUpdateAttemptReported = 225,
3774    AtomUpdateEngineSuccessfulUpdateReported = 226,
3775    AtomCameraActionEvent = 227,
3776    AtomAppCompatibilityChangeReported = 228,
3777    AtomPerfettoUploaded = 229,
3778    AtomVmsClientConnectionStateChanged = 230,
3779    AtomMediaProviderScanOccurred = 233,
3780    AtomMediaContentDeleted = 234,
3781    AtomMediaProviderPermissionRequested = 235,
3782    AtomMediaProviderSchemaChanged = 236,
3783    AtomMediaProviderIdleMaintenanceFinished = 237,
3784    AtomRebootEscrowRecoveryReported = 238,
3785    AtomBootTimeEventDurationReported = 239,
3786    AtomBootTimeEventElapsedTimeReported = 240,
3787    AtomBootTimeEventUtcTimeReported = 241,
3788    AtomBootTimeEventErrorCodeReported = 242,
3789    AtomUserspaceRebootReported = 243,
3790    AtomNotificationReported = 244,
3791    AtomNotificationPanelReported = 245,
3792    AtomNotificationChannelModified = 246,
3793    AtomIntegrityCheckResultReported = 247,
3794    AtomIntegrityRulesPushed = 248,
3795    AtomCbMessageReported = 249,
3796    AtomCbMessageError = 250,
3797    AtomWifiHealthStatReported = 251,
3798    AtomWifiFailureStatReported = 252,
3799    AtomWifiConnectionResultReported = 253,
3800    AtomAppFreezeChanged = 254,
3801    AtomSnapshotMergeReported = 255,
3802    AtomForegroundServiceAppOpSessionEnded = 256,
3803    AtomDisplayJankReported = 257,
3804    AtomAppStandbyBucketChanged = 258,
3805    AtomSharesheetStarted = 259,
3806    AtomRankingSelected = 260,
3807    AtomTvsettingsUiInteracted = 261,
3808    AtomLauncherSnapshot = 262,
3809    AtomPackageInstallerV2Reported = 263,
3810    AtomUserLifecycleJourneyReported = 264,
3811    AtomUserLifecycleEventOccurred = 265,
3812    AtomAccessibilityShortcutReported = 266,
3813    AtomAccessibilityServiceReported = 267,
3814    AtomDocsUiDragAndDropReported = 268,
3815    AtomAppUsageEventOccurred = 269,
3816    AtomAutoRevokeNotificationClicked = 270,
3817    AtomAutoRevokeFragmentAppViewed = 271,
3818    AtomAutoRevokedAppInteraction = 272,
3819    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
3820    AtomEvsUsageStatsReported = 274,
3821    AtomAudioPowerUsageDataReported = 275,
3822    AtomTvTunerStateChanged = 276,
3823    AtomMediaoutputOpSwitchReported = 277,
3824    AtomCbMessageFiltered = 278,
3825    AtomTvTunerDvrStatus = 279,
3826    AtomTvCasSessionOpenStatus = 280,
3827    AtomAssistantInvocationReported = 281,
3828    AtomDisplayWakeReported = 282,
3829    AtomCarUserHalModifyUserRequestReported = 283,
3830    AtomCarUserHalModifyUserResponseReported = 284,
3831    AtomCarUserHalPostSwitchResponseReported = 285,
3832    AtomCarUserHalInitialUserInfoRequestReported = 286,
3833    AtomCarUserHalInitialUserInfoResponseReported = 287,
3834    AtomCarUserHalUserAssociationRequestReported = 288,
3835    AtomCarUserHalSetUserAssociationResponseReported = 289,
3836    AtomNetworkIpProvisioningReported = 290,
3837    AtomNetworkDhcpRenewReported = 291,
3838    AtomNetworkValidationReported = 292,
3839    AtomNetworkStackQuirkReported = 293,
3840    AtomMediametricsAudiorecorddeviceusageReported = 294,
3841    AtomMediametricsAudiothreaddeviceusageReported = 295,
3842    AtomMediametricsAudiotrackdeviceusageReported = 296,
3843    AtomMediametricsAudiodeviceconnectionReported = 297,
3844    AtomBlobCommitted = 298,
3845    AtomBlobLeased = 299,
3846    AtomBlobOpened = 300,
3847    AtomContactsProviderStatusReported = 301,
3848    AtomKeystoreKeyEventReported = 302,
3849    AtomNetworkTetheringReported = 303,
3850    AtomImeTouchReported = 304,
3851    AtomUiInteractionFrameInfoReported = 305,
3852    AtomUiActionLatencyReported = 306,
3853    AtomWifiDisconnectReported = 307,
3854    AtomWifiConnectionStateChanged = 308,
3855    AtomHdmiCecActiveSourceChanged = 309,
3856    AtomHdmiCecMessageReported = 310,
3857    AtomAirplaneMode = 311,
3858    AtomModemRestart = 312,
3859    AtomCarrierIdMismatchReported = 313,
3860    AtomCarrierIdTableUpdated = 314,
3861    AtomDataStallRecoveryReported = 315,
3862    AtomMediametricsMediaparserReported = 316,
3863    AtomTlsHandshakeReported = 317,
3864    AtomTextClassifierApiUsageReported = 318,
3865    AtomCarWatchdogKillStatsReported = 319,
3866    AtomMediametricsPlaybackReported = 320,
3867    AtomMediaNetworkInfoChanged = 321,
3868    AtomMediaPlaybackStateChanged = 322,
3869    AtomMediaPlaybackErrorReported = 323,
3870    AtomMediaPlaybackTrackChanged = 324,
3871    AtomWifiScanReported = 325,
3872    AtomWifiPnoScanReported = 326,
3873    AtomTifTuneChanged = 327,
3874    AtomAutoRotateReported = 328,
3875    AtomPerfettoTrigger = 329,
3876    AtomTranscodingData = 330,
3877    AtomImsServiceEntitlementUpdated = 331,
3878    AtomDeviceRotated = 333,
3879    AtomSimSpecificSettingsRestored = 334,
3880    AtomTextClassifierDownloadReported = 335,
3881    AtomPinStorageEvent = 336,
3882    AtomFaceDownReported = 337,
3883    AtomBluetoothHalCrashReasonReported = 338,
3884    AtomRebootEscrowPreparationReported = 339,
3885    AtomRebootEscrowLskfCaptureReported = 340,
3886    AtomRebootEscrowRebootReported = 341,
3887    AtomBinderLatencyReported = 342,
3888    AtomMediametricsAaudiostreamReported = 343,
3889    AtomMediaTranscodingSessionEnded = 344,
3890    AtomMagnificationUsageReported = 345,
3891    AtomMagnificationModeWithImeOnReported = 346,
3892    AtomAppSearchCallStatsReported = 347,
3893    AtomAppSearchPutDocumentStatsReported = 348,
3894    AtomDeviceControlChanged = 349,
3895    AtomDeviceStateChanged = 350,
3896    AtomInputdeviceRegistered = 351,
3897    AtomSmartspaceCardReported = 352,
3898    AtomAuthPromptAuthenticateInvoked = 353,
3899    AtomAuthManagerCanAuthenticateInvoked = 354,
3900    AtomAuthEnrollActionInvoked = 355,
3901    AtomAuthDeprecatedApiUsed = 356,
3902    AtomUnattendedRebootOccurred = 357,
3903    AtomLongRebootBlockingReported = 358,
3904    AtomLocationTimeZoneProviderStateChanged = 359,
3905    AtomFdtrackEventOccurred = 364,
3906    AtomTimeoutAutoExtendedReported = 365,
3907    AtomAlarmBatchDelivered = 367,
3908    AtomAlarmScheduled = 368,
3909    AtomCarWatchdogIoOveruseStatsReported = 369,
3910    AtomUserLevelHibernationStateChanged = 370,
3911    AtomAppSearchInitializeStatsReported = 371,
3912    AtomAppSearchQueryStatsReported = 372,
3913    AtomAppProcessDied = 373,
3914    AtomNetworkIpReachabilityMonitorReported = 374,
3915    AtomSlowInputEventReported = 375,
3916    AtomAnrOccurredProcessingStarted = 376,
3917    AtomAppSearchRemoveStatsReported = 377,
3918    AtomMediaCodecReported = 378,
3919    AtomPermissionUsageFragmentInteraction = 379,
3920    AtomPermissionDetailsInteraction = 380,
3921    AtomPrivacySensorToggleInteraction = 381,
3922    AtomPrivacyToggleDialogInteraction = 382,
3923    AtomAppSearchOptimizeStatsReported = 383,
3924    AtomNonA11yToolServiceWarningReport = 384,
3925    AtomAppCompatStateChanged = 386,
3926    AtomSizeCompatRestartButtonEventReported = 387,
3927    AtomSplitscreenUiChanged = 388,
3928    AtomNetworkDnsHandshakeReported = 389,
3929    AtomBluetoothCodePathCounter = 390,
3930    AtomBluetoothLeBatchScanReportDelay = 392,
3931    AtomAccessibilityFloatingMenuUiChanged = 393,
3932    AtomNeuralnetworksCompilationCompleted = 394,
3933    AtomNeuralnetworksExecutionCompleted = 395,
3934    AtomNeuralnetworksCompilationFailed = 396,
3935    AtomNeuralnetworksExecutionFailed = 397,
3936    AtomContextHubBooted = 398,
3937    AtomContextHubRestarted = 399,
3938    AtomContextHubLoadedNanoappSnapshotReported = 400,
3939    AtomChreCodeDownloadTransacted = 401,
3940    AtomUwbSessionInited = 402,
3941    AtomUwbSessionClosed = 403,
3942    AtomUwbFirstRangingReceived = 404,
3943    AtomUwbRangingMeasurementReceived = 405,
3944    AtomTextClassifierDownloadWorkScheduled = 406,
3945    AtomTextClassifierDownloadWorkCompleted = 407,
3946    AtomClipboardCleared = 408,
3947    AtomVmCreationRequested = 409,
3948    AtomNearbyDeviceScanStateChanged = 410,
3949    AtomApplicationLocalesChanged = 412,
3950    AtomMediametricsAudiotrackstatusReported = 413,
3951    AtomFoldStateDurationReported = 414,
3952    AtomLocationTimeZoneProviderControllerStateChanged = 415,
3953    AtomDisplayHbmStateChanged = 416,
3954    AtomDisplayHbmBrightnessChanged = 417,
3955    AtomPersistentUriPermissionsFlushed = 418,
3956    AtomEarlyBootCompOsArtifactsCheckReported = 419,
3957    AtomVbmetaDigestReported = 420,
3958    AtomApexInfoGathered = 421,
3959    AtomPvmInfoGathered = 422,
3960    AtomWearSettingsUiInteracted = 423,
3961    AtomTracingServiceReportEvent = 424,
3962    AtomMediametricsAudiorecordstatusReported = 425,
3963    AtomLauncherLatency = 426,
3964    AtomDropboxEntryDropped = 427,
3965    AtomWifiP2pConnectionReported = 428,
3966    AtomGameStateChanged = 429,
3967    AtomHotwordDetectorCreateRequested = 430,
3968    AtomHotwordDetectionServiceInitResultReported = 431,
3969    AtomHotwordDetectionServiceRestarted = 432,
3970    AtomHotwordDetectorKeyphraseTriggered = 433,
3971    AtomHotwordDetectorEvents = 434,
3972    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
3973    AtomContactsIndexerUpdateStatsReported = 440,
3974    AtomAppBackgroundRestrictionsInfo = 441,
3975    AtomMmsSmsProviderGetThreadIdFailed = 442,
3976    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
3977    AtomPermissionReminderNotificationInteracted = 444,
3978    AtomRecentPermissionDecisionsInteracted = 445,
3979    AtomGnssPsdsDownloadReported = 446,
3980    AtomLeAudioConnectionSessionReported = 447,
3981    AtomLeAudioBroadcastSessionReported = 448,
3982    AtomDreamUiEventReported = 449,
3983    AtomTaskManagerEventReported = 450,
3984    AtomCdmAssociationAction = 451,
3985    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
3986    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
3987    AtomAccessibilityTextReadingOptionsChanged = 454,
3988    AtomWifiSetupFailureCrashReported = 455,
3989    AtomUwbDeviceErrorReported = 456,
3990    AtomIsolatedCompilationScheduled = 457,
3991    AtomIsolatedCompilationEnded = 458,
3992    AtomOnsOpportunisticEsimProvisioningComplete = 459,
3993    AtomSystemServerPreWatchdogOccurred = 460,
3994    AtomTelephonyAnomalyDetected = 461,
3995    AtomLetterboxPositionChanged = 462,
3996    AtomRemoteKeyProvisioningAttempt = 463,
3997    AtomRemoteKeyProvisioningNetworkInfo = 464,
3998    AtomRemoteKeyProvisioningTiming = 465,
3999    AtomMediaoutputOpInteractionReport = 466,
4000    AtomSyncExemptionOccurred = 468,
4001    AtomAutofillPresentationEventReported = 469,
4002    AtomDockStateChanged = 470,
4003    AtomSafetySourceStateCollected = 471,
4004    AtomSafetyCenterSystemEventReported = 472,
4005    AtomSafetyCenterInteractionReported = 473,
4006    AtomSettingsProviderSettingChanged = 474,
4007    AtomBroadcastDeliveryEventReported = 475,
4008    AtomServiceRequestEventReported = 476,
4009    AtomProviderAcquisitionEventReported = 477,
4010    AtomBluetoothDeviceNameReported = 478,
4011    AtomCbConfigUpdated = 479,
4012    AtomCbModuleErrorReported = 480,
4013    AtomCbServiceFeatureChanged = 481,
4014    AtomCbReceiverFeatureChanged = 482,
4015    AtomPrivacySignalNotificationInteraction = 484,
4016    AtomPrivacySignalIssueCardInteraction = 485,
4017    AtomPrivacySignalsJobFailure = 486,
4018    AtomVibrationReported = 487,
4019    AtomUwbRangingStart = 489,
4020    AtomAppCompactedV2 = 491,
4021    AtomDisplayBrightnessChanged = 494,
4022    AtomActivityActionBlocked = 495,
4023    AtomNetworkDnsServerSupportReported = 504,
4024    AtomVmBooted = 505,
4025    AtomVmExited = 506,
4026    AtomAmbientBrightnessStatsReported = 507,
4027    AtomMediametricsSpatializercapabilitiesReported = 508,
4028    AtomMediametricsSpatializerdeviceenabledReported = 509,
4029    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
4030    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
4031    AtomHearingAidInfoReported = 513,
4032    AtomDeviceWideJobConstraintChanged = 514,
4033    AtomAmbientModeChanged = 515,
4034    AtomAnrLatencyReported = 516,
4035    AtomResourceApiInfo = 517,
4036    AtomSystemDefaultNetworkChanged = 518,
4037    AtomIwlanSetupDataCallResultReported = 519,
4038    AtomIwlanPdnDisconnectedReasonReported = 520,
4039    AtomAirplaneModeSessionReported = 521,
4040    AtomVmCpuStatusReported = 522,
4041    AtomVmMemStatusReported = 523,
4042    AtomPackageInstallationSessionReported = 524,
4043    AtomDefaultNetworkRematchInfo = 525,
4044    AtomNetworkSelectionPerformance = 526,
4045    AtomNetworkNsdReported = 527,
4046    AtomBluetoothDisconnectionReasonReported = 529,
4047    AtomBluetoothLocalVersionsReported = 530,
4048    AtomBluetoothRemoteSupportedFeaturesReported = 531,
4049    AtomBluetoothLocalSupportedFeaturesReported = 532,
4050    AtomBluetoothGattAppInfo = 533,
4051    AtomBrightnessConfigurationUpdated = 534,
4052    AtomWearMediaOutputSwitcherLaunched = 538,
4053    AtomWearMediaOutputSwitcherFinished = 539,
4054    AtomWearMediaOutputSwitcherConnectionReported = 540,
4055    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
4056    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
4057    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
4058    AtomPackageManagerSnapshotReported = 544,
4059    AtomPackageManagerAppsFilterCacheBuildReported = 545,
4060    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
4061    AtomLauncherImpressionEvent = 547,
4062    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
4063    AtomWsWatchFaceEdited = 551,
4064    AtomWsWatchFaceFavoriteActionReported = 552,
4065    AtomWsWatchFaceSetActionReported = 553,
4066    AtomPackageUninstallationReported = 554,
4067    AtomGameModeChanged = 555,
4068    AtomGameModeConfigurationChanged = 556,
4069    AtomBedtimeModeStateChanged = 557,
4070    AtomNetworkSliceSessionEnded = 558,
4071    AtomNetworkSliceDailyDataUsageReported = 559,
4072    AtomNfcTagTypeOccurred = 560,
4073    AtomNfcAidConflictOccurred = 561,
4074    AtomNfcReaderConflictOccurred = 562,
4075    AtomWsTileListChanged = 563,
4076    AtomGetTypeAccessedWithoutPermission = 564,
4077    AtomMobileBundledAppInfoGathered = 566,
4078    AtomWsWatchFaceComplicationSetChanged = 567,
4079    AtomMediaDrmCreated = 568,
4080    AtomMediaDrmErrored = 569,
4081    AtomMediaDrmSessionOpened = 570,
4082    AtomMediaDrmSessionClosed = 571,
4083    AtomUserSelectedResolution = 572,
4084    AtomUnsafeIntentEventReported = 573,
4085    AtomPerformanceHintSessionReported = 574,
4086    AtomMediametricsMidiDeviceCloseReported = 576,
4087    AtomBiometricTouchReported = 577,
4088    AtomHotwordAudioEgressEventReported = 578,
4089    AtomLocationEnabledStateChanged = 580,
4090    AtomImeRequestFinished = 581,
4091    AtomUsbComplianceWarningsReported = 582,
4092    AtomAppSupportedLocalesChanged = 583,
4093    AtomMediaProviderVolumeRecoveryReported = 586,
4094    AtomBiometricPropertiesCollected = 587,
4095    AtomKernelWakeupAttributed = 588,
4096    AtomScreenStateChangedV2 = 589,
4097    AtomWsBackupActionReported = 590,
4098    AtomWsRestoreActionReported = 591,
4099    AtomDeviceLogAccessEventReported = 592,
4100    AtomMediaSessionUpdated = 594,
4101    AtomWearOobeStateChanged = 595,
4102    AtomWsNotificationUpdated = 596,
4103    AtomNetworkValidationFailureStatsDailyReported = 601,
4104    AtomWsComplicationTapped = 602,
4105    AtomWsNotificationBlocking = 780,
4106    AtomWsNotificationBridgemodeUpdated = 822,
4107    AtomWsNotificationDismissalActioned = 823,
4108    AtomWsNotificationActioned = 824,
4109    AtomWsNotificationLatency = 880,
4110    AtomWifiBytesTransfer = 10000,
4111    AtomWifiBytesTransferByFgBg = 10001,
4112    AtomMobileBytesTransfer = 10002,
4113    AtomMobileBytesTransferByFgBg = 10003,
4114    AtomBluetoothBytesTransfer = 10006,
4115    AtomKernelWakelock = 10004,
4116    AtomSubsystemSleepState = 10005,
4117    AtomCpuTimePerUid = 10009,
4118    AtomCpuTimePerUidFreq = 10010,
4119    AtomWifiActivityInfo = 10011,
4120    AtomModemActivityInfo = 10012,
4121    AtomBluetoothActivityInfo = 10007,
4122    AtomProcessMemoryState = 10013,
4123    AtomSystemElapsedRealtime = 10014,
4124    AtomSystemUptime = 10015,
4125    AtomCpuActiveTime = 10016,
4126    AtomCpuClusterTime = 10017,
4127    AtomDiskSpace = 10018,
4128    AtomRemainingBatteryCapacity = 10019,
4129    AtomFullBatteryCapacity = 10020,
4130    AtomTemperature = 10021,
4131    AtomBinderCalls = 10022,
4132    AtomBinderCallsExceptions = 10023,
4133    AtomLooperStats = 10024,
4134    AtomDiskStats = 10025,
4135    AtomDirectoryUsage = 10026,
4136    AtomAppSize = 10027,
4137    AtomCategorySize = 10028,
4138    AtomProcStats = 10029,
4139    AtomBatteryVoltage = 10030,
4140    AtomNumFingerprintsEnrolled = 10031,
4141    AtomDiskIo = 10032,
4142    AtomPowerProfile = 10033,
4143    AtomProcStatsPkgProc = 10034,
4144    AtomProcessCpuTime = 10035,
4145    AtomCpuTimePerThreadFreq = 10037,
4146    AtomOnDevicePowerMeasurement = 10038,
4147    AtomDeviceCalculatedPowerUse = 10039,
4148    AtomProcessMemoryHighWaterMark = 10042,
4149    AtomBatteryLevel = 10043,
4150    AtomBuildInformation = 10044,
4151    AtomBatteryCycleCount = 10045,
4152    AtomDebugElapsedClock = 10046,
4153    AtomDebugFailingElapsedClock = 10047,
4154    AtomNumFacesEnrolled = 10048,
4155    AtomRoleHolder = 10049,
4156    AtomDangerousPermissionState = 10050,
4157    AtomTrainInfo = 10051,
4158    AtomTimeZoneDataInfo = 10052,
4159    AtomExternalStorageInfo = 10053,
4160    AtomGpuStatsGlobalInfo = 10054,
4161    AtomGpuStatsAppInfo = 10055,
4162    AtomSystemIonHeapSize = 10056,
4163    AtomAppsOnExternalStorageInfo = 10057,
4164    AtomFaceSettings = 10058,
4165    AtomCoolingDevice = 10059,
4166    AtomAppOps = 10060,
4167    AtomProcessSystemIonHeapSize = 10061,
4168    AtomSurfaceflingerStatsGlobalInfo = 10062,
4169    AtomSurfaceflingerStatsLayerInfo = 10063,
4170    AtomProcessMemorySnapshot = 10064,
4171    AtomVmsClientStats = 10065,
4172    AtomNotificationRemoteViews = 10066,
4173    AtomDangerousPermissionStateSampled = 10067,
4174    AtomGraphicsStats = 10068,
4175    AtomRuntimeAppOpAccess = 10069,
4176    AtomIonHeapSize = 10070,
4177    AtomPackageNotificationPreferences = 10071,
4178    AtomPackageNotificationChannelPreferences = 10072,
4179    AtomPackageNotificationChannelGroupPreferences = 10073,
4180    AtomGnssStats = 10074,
4181    AtomAttributedAppOps = 10075,
4182    AtomVoiceCallSession = 10076,
4183    AtomVoiceCallRatUsage = 10077,
4184    AtomSimSlotState = 10078,
4185    AtomSupportedRadioAccessFamily = 10079,
4186    AtomSettingSnapshot = 10080,
4187    AtomBlobInfo = 10081,
4188    AtomDataUsageBytesTransfer = 10082,
4189    AtomBytesTransferByTagAndMetered = 10083,
4190    AtomDndModeRule = 10084,
4191    AtomGeneralExternalStorageAccessStats = 10085,
4192    AtomIncomingSms = 10086,
4193    AtomOutgoingSms = 10087,
4194    AtomCarrierIdTableVersion = 10088,
4195    AtomDataCallSession = 10089,
4196    AtomCellularServiceState = 10090,
4197    AtomCellularDataServiceSwitch = 10091,
4198    AtomSystemMemory = 10092,
4199    AtomImsRegistrationTermination = 10093,
4200    AtomImsRegistrationStats = 10094,
4201    AtomCpuTimePerClusterFreq = 10095,
4202    AtomCpuCyclesPerUidCluster = 10096,
4203    AtomDeviceRotatedData = 10097,
4204    AtomCpuCyclesPerThreadGroupCluster = 10098,
4205    AtomMediaDrmActivityInfo = 10099,
4206    AtomOemManagedBytesTransfer = 10100,
4207    AtomGnssPowerStats = 10101,
4208    AtomTimeZoneDetectorState = 10102,
4209    AtomKeystore2StorageStats = 10103,
4210    AtomRkpPoolStats = 10104,
4211    AtomProcessDmabufMemory = 10105,
4212    AtomPendingAlarmInfo = 10106,
4213    AtomUserLevelHibernatedApps = 10107,
4214    AtomLauncherLayoutSnapshot = 10108,
4215    AtomGlobalHibernatedApps = 10109,
4216    AtomInputEventLatencySketch = 10110,
4217    AtomBatteryUsageStatsBeforeReset = 10111,
4218    AtomBatteryUsageStatsSinceReset = 10112,
4219    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
4220    AtomInstalledIncrementalPackage = 10114,
4221    AtomTelephonyNetworkRequests = 10115,
4222    AtomAppSearchStorageInfo = 10116,
4223    AtomVmstat = 10117,
4224    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
4225    AtomKeystore2KeyCreationWithAuthInfo = 10119,
4226    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
4227    AtomKeystore2AtomWithOverflow = 10121,
4228    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
4229    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
4230    AtomRkpErrorStats = 10124,
4231    AtomKeystore2CrashStats = 10125,
4232    AtomVendorApexInfo = 10126,
4233    AtomAccessibilityShortcutStats = 10127,
4234    AtomAccessibilityFloatingMenuStats = 10128,
4235    AtomDataUsageBytesTransferV2 = 10129,
4236    AtomMediaCapabilities = 10130,
4237    AtomCarWatchdogSystemIoUsageSummary = 10131,
4238    AtomCarWatchdogUidIoUsageSummary = 10132,
4239    AtomImsRegistrationFeatureTagStats = 10133,
4240    AtomRcsClientProvisioningStats = 10134,
4241    AtomRcsAcsProvisioningStats = 10135,
4242    AtomSipDelegateStats = 10136,
4243    AtomSipTransportFeatureTagStats = 10137,
4244    AtomSipMessageResponse = 10138,
4245    AtomSipTransportSession = 10139,
4246    AtomImsDedicatedBearerListenerEvent = 10140,
4247    AtomImsDedicatedBearerEvent = 10141,
4248    AtomImsRegistrationServiceDescStats = 10142,
4249    AtomUceEventStats = 10143,
4250    AtomPresenceNotifyEvent = 10144,
4251    AtomGbaEvent = 10145,
4252    AtomPerSimStatus = 10146,
4253    AtomGpuWorkPerUid = 10147,
4254    AtomPersistentUriPermissionsAmountPerPackage = 10148,
4255    AtomSignedPartitionInfo = 10149,
4256    AtomPinnedFileSizesPerPackage = 10150,
4257    AtomPendingIntentsPerPackage = 10151,
4258    AtomUserInfo = 10152,
4259    AtomTelephonyNetworkRequestsV2 = 10153,
4260    AtomDeviceTelephonyProperties = 10154,
4261    AtomRemoteKeyProvisioningErrorCounts = 10155,
4262    AtomSafetyState = 10156,
4263    AtomIncomingMms = 10157,
4264    AtomOutgoingMms = 10158,
4265    AtomMultiUserInfo = 10160,
4266    AtomNetworkBpfMapInfo = 10161,
4267    AtomOutgoingShortCodeSms = 10162,
4268    AtomConnectivityStateSample = 10163,
4269    AtomNetworkSelectionRematchReasonsInfo = 10164,
4270    AtomGameModeInfo = 10165,
4271    AtomGameModeConfiguration = 10166,
4272    AtomGameModeListener = 10167,
4273    AtomNetworkSliceRequestCount = 10168,
4274    AtomWsTileSnapshot = 10169,
4275    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
4276    AtomProcessState = 10171,
4277    AtomProcessAssociation = 10172,
4278    AtomAdpfSystemComponentInfo = 10173,
4279    AtomNotificationMemoryUse = 10174,
4280    AtomHdrCapabilities = 10175,
4281    AtomWsFavouriteWatchFaceListSnapshot = 10176,
4282    AtomAccessibilityCheckResultReported = 910,
4283    AtomAdaptiveAuthUnlockAfterLockReported = 820,
4284    AtomThermalStatusCalled = 772,
4285    AtomThermalHeadroomCalled = 773,
4286    AtomThermalHeadroomThresholdsCalled = 774,
4287    AtomAdpfHintSessionTidCleanup = 839,
4288    AtomThermalHeadroomThresholds = 10201,
4289    AtomAdpfSessionSnapshot = 10218,
4290    AtomJsscriptengineLatencyReported = 483,
4291    AtomAdServicesApiCalled = 435,
4292    AtomAdServicesMesurementReportsUploaded = 436,
4293    AtomMobileDataDownloadFileGroupStatusReported = 490,
4294    AtomMobileDataDownloadDownloadResultReported = 502,
4295    AtomAdServicesSettingsUsageReported = 493,
4296    AtomBackgroundFetchProcessReported = 496,
4297    AtomUpdateCustomAudienceProcessReported = 497,
4298    AtomRunAdBiddingProcessReported = 498,
4299    AtomRunAdScoringProcessReported = 499,
4300    AtomRunAdSelectionProcessReported = 500,
4301    AtomRunAdBiddingPerCaProcessReported = 501,
4302    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
4303    AtomAdServicesMeasurementRegistrations = 512,
4304    AtomAdServicesGetTopicsReported = 535,
4305    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
4306    AtomAdServicesEpochComputationClassifierReported = 537,
4307    AtomAdServicesBackCompatGetTopicsReported = 598,
4308    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
4309    AtomAdServicesMeasurementDebugKeys = 640,
4310    AtomAdServicesErrorReported = 662,
4311    AtomAdServicesBackgroundJobsExecutionReported = 663,
4312    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
4313    AtomAdServicesMeasurementAttribution = 674,
4314    AtomAdServicesMeasurementJobs = 675,
4315    AtomAdServicesMeasurementWipeout = 676,
4316    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
4317    AtomAdServicesEnrollmentDataStored = 697,
4318    AtomAdServicesEnrollmentFileDownloaded = 698,
4319    AtomAdServicesEnrollmentMatched = 699,
4320    AtomAdServicesConsentMigrated = 702,
4321    AtomAdServicesEnrollmentFailed = 714,
4322    AtomAdServicesMeasurementClickVerification = 756,
4323    AtomAdServicesEncryptionKeyFetched = 765,
4324    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
4325    AtomDestinationRegisteredBeacons = 767,
4326    AtomReportInteractionApiCalled = 768,
4327    AtomInteractionReportingTableCleared = 769,
4328    AtomAppManifestConfigHelperCalled = 788,
4329    AtomAdFilteringProcessJoinCaReported = 793,
4330    AtomAdFilteringProcessAdSelectionReported = 794,
4331    AtomAdCounterHistogramUpdaterReported = 795,
4332    AtomSignatureVerification = 807,
4333    AtomKAnonImmediateSignJoinStatusReported = 808,
4334    AtomKAnonBackgroundJobStatusReported = 809,
4335    AtomKAnonInitializeStatusReported = 810,
4336    AtomKAnonSignStatusReported = 811,
4337    AtomKAnonJoinStatusReported = 812,
4338    AtomKAnonKeyAttestationStatusReported = 813,
4339    AtomGetAdSelectionDataApiCalled = 814,
4340    AtomGetAdSelectionDataBuyerInputGenerated = 815,
4341    AtomBackgroundJobSchedulingReported = 834,
4342    AtomTopicsEncryptionEpochComputationReported = 840,
4343    AtomTopicsEncryptionGetTopicsReported = 841,
4344    AtomAdservicesShellCommandCalled = 842,
4345    AtomUpdateSignalsApiCalled = 843,
4346    AtomEncodingJobRun = 844,
4347    AtomEncodingJsFetch = 845,
4348    AtomEncodingJsExecution = 846,
4349    AtomPersistAdSelectionResultCalled = 847,
4350    AtomServerAuctionKeyFetchCalled = 848,
4351    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
4352    AtomAdServicesMeasurementProcessOdpRegistration = 864,
4353    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
4354    AtomSelectAdsFromOutcomesApiCalled = 876,
4355    AtomReportImpressionApiCalled = 877,
4356    AtomAdServicesEnrollmentTransactionStats = 885,
4357    AtomAdServicesCobaltLoggerEventReported = 902,
4358    AtomAdServicesCobaltPeriodicJobEventReported = 903,
4359    AtomUpdateSignalsProcessReported = 905,
4360    AtomTopicsScheduleEpochJobSettingReported = 930,
4361    AtomAiWallpapersButtonPressed = 706,
4362    AtomAiWallpapersTemplateSelected = 707,
4363    AtomAiWallpapersTermSelected = 708,
4364    AtomAiWallpapersWallpaperSet = 709,
4365    AtomAiWallpapersSessionSummary = 710,
4366    AtomApexInstallationRequested = 732,
4367    AtomApexInstallationStaged = 733,
4368    AtomApexInstallationEnded = 734,
4369    AtomAppSearchSetSchemaStatsReported = 385,
4370    AtomAppSearchSchemaMigrationStatsReported = 579,
4371    AtomAppSearchUsageSearchIntentStatsReported = 825,
4372    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
4373    AtomAppSearchAppsIndexerStatsReported = 909,
4374    AtomArtDatumReported = 332,
4375    AtomArtDeviceDatumReported = 550,
4376    AtomArtDatumDeltaReported = 565,
4377    AtomArtDex2oatReported = 929,
4378    AtomArtDeviceStatus = 10205,
4379    AtomBackgroundDexoptJobEnded = 467,
4380    AtomPrerebootDexoptJobEnded = 883,
4381    AtomOdrefreshReported = 366,
4382    AtomOdsignReported = 548,
4383    AtomAutofillUiEventReported = 603,
4384    AtomAutofillFillRequestReported = 604,
4385    AtomAutofillFillResponseReported = 605,
4386    AtomAutofillSaveEventReported = 606,
4387    AtomAutofillSessionCommitted = 607,
4388    AtomAutofillFieldClassificationEventReported = 659,
4389    AtomCarRecentsEventReported = 770,
4390    AtomCarCalmModeEventReported = 797,
4391    AtomCarWakeupFromSuspendReported = 852,
4392    AtomPluginInitialized = 655,
4393    AtomBluetoothHashedDeviceNameReported = 613,
4394    AtomBluetoothL2capCocClientConnection = 614,
4395    AtomBluetoothL2capCocServerConnection = 615,
4396    AtomBluetoothLeSessionConnected = 656,
4397    AtomRestrictedBluetoothDeviceNameReported = 666,
4398    AtomBluetoothProfileConnectionAttempted = 696,
4399    AtomBluetoothContentProfileErrorReported = 781,
4400    AtomBluetoothRfcommConnectionAttempted = 782,
4401    AtomRemoteDeviceInformationWithMetricId = 862,
4402    AtomLeAppScanStateChanged = 870,
4403    AtomLeRadioScanStopped = 871,
4404    AtomLeScanResultReceived = 872,
4405    AtomLeScanAbused = 873,
4406    AtomLeAdvStateChanged = 874,
4407    AtomLeAdvErrorReported = 875,
4408    AtomA2dpSessionReported = 904,
4409    AtomBluetoothCrossLayerEventReported = 916,
4410    AtomBroadcastAudioSessionReported = 927,
4411    AtomBroadcastAudioSyncReported = 928,
4412    AtomBluetoothRfcommConnectionReportedAtClose = 982,
4413    AtomBluetoothLeConnection = 988,
4414    AtomBroadcastSent = 922,
4415    AtomCameraFeatureCombinationQueryEvent = 900,
4416    AtomCertificateTransparencyLogListStateChanged = 934,
4417    AtomCertificateTransparencyLogListUpdateFailed = 972,
4418    AtomDailyKeepaliveInfoReported = 650,
4419    AtomNetworkRequestStateChanged = 779,
4420    AtomTetheringActiveSessionsReported = 925,
4421    AtomNetworkStatsRecorderFileOperated = 783,
4422    AtomCoreNetworkingTerribleErrorOccurred = 979,
4423    AtomApfSessionInfoReported = 777,
4424    AtomIpClientRaInfoReported = 778,
4425    AtomVpnConnectionStateChanged = 850,
4426    AtomVpnConnectionReported = 851,
4427    AtomCpuPolicy = 10199,
4428    AtomCredentialManagerApiCalled = 585,
4429    AtomCredentialManagerInitPhaseReported = 651,
4430    AtomCredentialManagerCandidatePhaseReported = 652,
4431    AtomCredentialManagerFinalPhaseReported = 653,
4432    AtomCredentialManagerTotalReported = 667,
4433    AtomCredentialManagerFinalnouidReported = 668,
4434    AtomCredentialManagerGetReported = 669,
4435    AtomCredentialManagerAuthClickReported = 670,
4436    AtomCredentialManagerApiv2Called = 671,
4437    AtomCronetEngineCreated = 703,
4438    AtomCronetTrafficReported = 704,
4439    AtomCronetEngineBuilderInitialized = 762,
4440    AtomCronetHttpFlagsInitialized = 763,
4441    AtomCronetInitialized = 764,
4442    AtomDesktopModeUiChanged = 818,
4443    AtomDesktopModeSessionTaskUpdate = 819,
4444    AtomDesktopModeTaskSizeUpdated = 935,
4445    AtomDeviceLockCheckInRequestReported = 726,
4446    AtomDeviceLockProvisioningCompleteReported = 727,
4447    AtomDeviceLockKioskAppRequestReported = 728,
4448    AtomDeviceLockCheckInRetryReported = 789,
4449    AtomDeviceLockProvisionFailureReported = 790,
4450    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
4451    AtomDevicePolicyManagementMode = 10216,
4452    AtomDevicePolicyState = 10217,
4453    AtomDisplayModeDirectorVoteChanged = 792,
4454    AtomExternalDisplayStateChanged = 806,
4455    AtomDndStateChanged = 657,
4456    AtomDreamSettingChanged = 705,
4457    AtomDreamSettingSnapshot = 10192,
4458    AtomExpressEventReported = 528,
4459    AtomExpressHistogramSampleReported = 593,
4460    AtomExpressUidEventReported = 644,
4461    AtomExpressUidHistogramSampleReported = 658,
4462    AtomFederatedComputeApiCalled = 712,
4463    AtomFederatedComputeTrainingEventReported = 771,
4464    AtomExampleIteratorNextLatencyReported = 838,
4465    AtomFullScreenIntentLaunched = 631,
4466    AtomBalAllowed = 632,
4467    AtomInTaskActivityStarted = 685,
4468    AtomDeviceOrientationChanged = 906,
4469    AtomCachedAppsHighWatermark = 10189,
4470    AtomStylusPredictionMetricsReported = 718,
4471    AtomUserRiskEventReported = 725,
4472    AtomMediaProjectionStateChanged = 729,
4473    AtomMediaProjectionTargetChanged = 730,
4474    AtomExcessiveBinderProxyCountReported = 853,
4475    AtomProxyBytesTransferByFgBg = 10200,
4476    AtomMobileBytesTransferByProcState = 10204,
4477    AtomBiometricFrrNotification = 817,
4478    AtomSensitiveContentMediaProjectionSession = 830,
4479    AtomSensitiveNotificationAppProtectionSession = 831,
4480    AtomSensitiveNotificationAppProtectionApplied = 832,
4481    AtomSensitiveNotificationRedaction = 833,
4482    AtomSensitiveContentAppProtection = 835,
4483    AtomAppRestrictionStateChanged = 866,
4484    AtomBatteryUsageStatsPerUid = 10209,
4485    AtomPostgcMemorySnapshot = 924,
4486    AtomPowerSaveTempAllowlistChanged = 926,
4487    AtomAppOpAccessTracked = 931,
4488    AtomContentOrFileUriEventReported = 933,
4489    AtomApplicationGrammaticalInflectionChanged = 584,
4490    AtomSystemGrammaticalInflectionChanged = 816,
4491    AtomBatteryHealth = 10220,
4492    AtomHdmiEarcStatusReported = 701,
4493    AtomHdmiSoundbarModeStatusReported = 724,
4494    AtomHealthConnectApiCalled = 616,
4495    AtomHealthConnectUsageStats = 617,
4496    AtomHealthConnectStorageStats = 618,
4497    AtomHealthConnectApiInvoked = 643,
4498    AtomExerciseRouteApiCalled = 654,
4499    AtomHealthConnectExportInvoked = 907,
4500    AtomHealthConnectImportInvoked = 918,
4501    AtomHealthConnectExportImportStatsReported = 919,
4502    AtomHealthConnectUiImpression = 623,
4503    AtomHealthConnectUiInteraction = 624,
4504    AtomHealthConnectAppOpenedReported = 625,
4505    AtomHotwordEgressSizeAtomReported = 761,
4506    AtomIkeSessionTerminated = 678,
4507    AtomIkeLivenessCheckSessionValidated = 760,
4508    AtomNegotiatedSecurityAssociation = 821,
4509    AtomKeyboardConfigured = 682,
4510    AtomKeyboardSystemsEventReported = 683,
4511    AtomInputdeviceUsageReported = 686,
4512    AtomInputEventLatencyReported = 932,
4513    AtomTouchpadUsage = 10191,
4514    AtomKernelOomKillOccurred = 754,
4515    AtomEmergencyStateChanged = 633,
4516    AtomChreSignificantMotionStateChanged = 868,
4517    AtomPopulationDensityProviderLoadingReported = 1002,
4518    AtomDensityBasedCoarseLocationsUsageReported = 1003,
4519    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
4520    AtomMediaCodecReclaimRequestCompleted = 600,
4521    AtomMediaCodecStarted = 641,
4522    AtomMediaCodecStopped = 642,
4523    AtomMediaCodecRendered = 684,
4524    AtomMediaEditingEndedReported = 798,
4525    AtomMteState = 10181,
4526    AtomMicroxrDeviceBootCompleteReported = 901,
4527    AtomNfcObserveModeStateChanged = 855,
4528    AtomNfcFieldChanged = 856,
4529    AtomNfcPollingLoopNotificationReported = 857,
4530    AtomNfcProprietaryCapabilitiesReported = 858,
4531    AtomOndevicepersonalizationApiCalled = 711,
4532    AtomComponentStateChangedReported = 863,
4533    AtomPdfLoadReported = 859,
4534    AtomPdfApiUsageReported = 860,
4535    AtomPdfSearchReported = 861,
4536    AtomPressureStallInformation = 10229,
4537    AtomPermissionRationaleDialogViewed = 645,
4538    AtomPermissionRationaleDialogActionReported = 646,
4539    AtomAppDataSharingUpdatesNotificationInteraction = 647,
4540    AtomAppDataSharingUpdatesFragmentViewed = 648,
4541    AtomAppDataSharingUpdatesFragmentActionReported = 649,
4542    AtomEnhancedConfirmationDialogResultReported = 827,
4543    AtomEnhancedConfirmationRestrictionCleared = 828,
4544    AtomPhotopickerSessionInfoReported = 886,
4545    AtomPhotopickerApiInfoReported = 887,
4546    AtomPhotopickerUiEventLogged = 888,
4547    AtomPhotopickerMediaItemStatusReported = 889,
4548    AtomPhotopickerPreviewInfoLogged = 890,
4549    AtomPhotopickerMenuInteractionLogged = 891,
4550    AtomPhotopickerBannerInteractionLogged = 892,
4551    AtomPhotopickerMediaLibraryInfoLogged = 893,
4552    AtomPhotopickerPageInfoLogged = 894,
4553    AtomPhotopickerMediaGridSyncInfoReported = 895,
4554    AtomPhotopickerAlbumSyncInfoReported = 896,
4555    AtomPhotopickerSearchInfoReported = 897,
4556    AtomSearchDataExtractionDetailsReported = 898,
4557    AtomEmbeddedPhotopickerInfoReported = 899,
4558    AtomAtom9999 = 9999,
4559    AtomAtom99999 = 99999,
4560    AtomScreenOffReported = 776,
4561    AtomScreenTimeoutOverrideReported = 836,
4562    AtomScreenInteractiveSessionReported = 837,
4563    AtomScreenDimReported = 867,
4564    AtomMediaProviderDatabaseRollbackReported = 784,
4565    AtomBackupSetupStatusReported = 785,
4566    AtomRangingSessionConfigured = 993,
4567    AtomRangingSessionStarted = 994,
4568    AtomRangingSessionClosed = 995,
4569    AtomRangingTechnologyStarted = 996,
4570    AtomRangingTechnologyStopped = 997,
4571    AtomRkpdPoolStats = 664,
4572    AtomRkpdClientOperation = 665,
4573    AtomSandboxApiCalled = 488,
4574    AtomSandboxActivityEventOccurred = 735,
4575    AtomSdkSandboxRestrictedAccessInSession = 796,
4576    AtomSandboxSdkStorage = 10159,
4577    AtomSelinuxAuditLog = 799,
4578    AtomSettingsSpaReported = 622,
4579    AtomTestExtensionAtomReported = 660,
4580    AtomTestRestrictedAtomReported = 672,
4581    AtomStatsSocketLossReported = 752,
4582    AtomLockscreenShortcutSelected = 611,
4583    AtomLockscreenShortcutTriggered = 612,
4584    AtomLauncherImpressionEventV2 = 716,
4585    AtomDisplaySwitchLatencyTracked = 753,
4586    AtomNotificationListenerService = 829,
4587    AtomNavHandleTouchPoints = 869,
4588    AtomCommunalHubWidgetEventReported = 908,
4589    AtomCommunalHubSnapshot = 10226,
4590    AtomEmergencyNumberDialed = 637,
4591    AtomCallStats = 10221,
4592    AtomCallAudioRouteStats = 10222,
4593    AtomTelecomApiStats = 10223,
4594    AtomTelecomErrorStats = 10224,
4595    AtomCellularRadioPowerStateChanged = 713,
4596    AtomEmergencyNumbersInfo = 10180,
4597    AtomDataNetworkValidation = 10207,
4598    AtomDataRatStateChanged = 854,
4599    AtomConnectedChannelChanged = 882,
4600    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
4601    AtomQualifiedRatListChanged = 634,
4602    AtomQnsImsCallDropStats = 635,
4603    AtomQnsFallbackRestrictionChanged = 636,
4604    AtomQnsRatPreferenceMismatchInfo = 10177,
4605    AtomQnsHandoverTimeMillis = 10178,
4606    AtomQnsHandoverPingpong = 10179,
4607    AtomSatelliteController = 10182,
4608    AtomSatelliteSession = 10183,
4609    AtomSatelliteIncomingDatagram = 10184,
4610    AtomSatelliteOutgoingDatagram = 10185,
4611    AtomSatelliteProvision = 10186,
4612    AtomSatelliteSosMessageRecommender = 10187,
4613    AtomCarrierRoamingSatelliteSession = 10211,
4614    AtomCarrierRoamingSatelliteControllerStats = 10212,
4615    AtomControllerStatsPerPackage = 10213,
4616    AtomSatelliteEntitlement = 10214,
4617    AtomSatelliteConfigUpdater = 10215,
4618    AtomSatelliteAccessController = 10219,
4619    AtomCellularIdentifierDisclosed = 800,
4620    AtomThreadnetworkTelemetryDataReported = 738,
4621    AtomThreadnetworkTopoEntryRepeated = 739,
4622    AtomThreadnetworkDeviceInfoReported = 740,
4623    AtomBootIntegrityInfoReported = 775,
4624    AtomTvLowPowerStandbyPolicy = 679,
4625    AtomExternalTvInputEvent = 717,
4626    AtomTestUprobestatsAtomReported = 915,
4627    AtomUwbActivityInfo = 10188,
4628    AtomMediatorUpdated = 721,
4629    AtomSysproxyBluetoothBytesTransfer = 10196,
4630    AtomSysproxyConnectionUpdated = 786,
4631    AtomWearCompanionConnectionState = 921,
4632    AtomMediaActionReported = 608,
4633    AtomMediaControlsLaunched = 609,
4634    AtomMediaSessionStateChanged = 677,
4635    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
4636    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
4637    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
4638    AtomWearModeStateChanged = 715,
4639    AtomRendererInitialized = 736,
4640    AtomSchemaVersionReceived = 737,
4641    AtomLayoutInspected = 741,
4642    AtomLayoutExpressionInspected = 742,
4643    AtomLayoutAnimationsInspected = 743,
4644    AtomMaterialComponentsInspected = 744,
4645    AtomTileRequested = 745,
4646    AtomStateResponseReceived = 746,
4647    AtomTileResponseReceived = 747,
4648    AtomInflationFinished = 748,
4649    AtomInflationFailed = 749,
4650    AtomIgnoredInflationFailuresReported = 750,
4651    AtomDrawableRendered = 751,
4652    AtomWearTimeSyncRequested = 911,
4653    AtomWearTimeUpdateStarted = 912,
4654    AtomWearTimeSyncAttemptCompleted = 913,
4655    AtomWearTimeChanged = 914,
4656    AtomWearAdaptiveSuspendStatsReported = 619,
4657    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
4658    AtomWearPowerAnomalyServiceEventStatsReported = 621,
4659    AtomWsWearTimeSession = 610,
4660    AtomWsIncomingCallActionReported = 626,
4661    AtomWsCallDisconnectionReported = 627,
4662    AtomWsCallDurationReported = 628,
4663    AtomWsCallUserExperienceLatencyReported = 629,
4664    AtomWsCallInteractionReported = 630,
4665    AtomWsOnBodyStateChanged = 787,
4666    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
4667    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
4668    AtomWsComplicationsImpactedNotificationEventReported = 804,
4669    AtomWsRemoteEventUsageReported = 920,
4670    AtomWsBugreportRequested = 936,
4671    AtomWsBugreportTriggered = 937,
4672    AtomWsBugreportFinished = 938,
4673    AtomWsBugreportResultReceived = 939,
4674    AtomWsStandaloneModeSnapshot = 10197,
4675    AtomWsFavoriteWatchFaceSnapshot = 10206,
4676    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
4677    AtomWsWatchFaceCustomizationSnapshot = 10227,
4678    AtomWearPowerMenuOpened = 731,
4679    AtomWearAssistantOpened = 755,
4680    AtomFirstOverlayStateChanged = 917,
4681    AtomWifiAwareNdpReported = 638,
4682    AtomWifiAwareAttachReported = 639,
4683    AtomWifiSelfRecoveryTriggered = 661,
4684    AtomSoftApStarted = 680,
4685    AtomSoftApStopped = 681,
4686    AtomWifiLockReleased = 687,
4687    AtomWifiLockDeactivated = 688,
4688    AtomWifiConfigSaved = 689,
4689    AtomWifiAwareResourceUsingChanged = 690,
4690    AtomWifiAwareHalApiCalled = 691,
4691    AtomWifiLocalOnlyRequestReceived = 692,
4692    AtomWifiLocalOnlyRequestScanTriggered = 693,
4693    AtomWifiThreadTaskExecuted = 694,
4694    AtomWifiStateChanged = 700,
4695    AtomPnoScanStarted = 719,
4696    AtomPnoScanStopped = 720,
4697    AtomWifiIsUnusableReported = 722,
4698    AtomWifiApCapabilitiesReported = 723,
4699    AtomSoftApStateChanged = 805,
4700    AtomScorerPredictionResultReported = 884,
4701    AtomWifiAwareCapabilities = 10190,
4702    AtomWifiModuleInfo = 10193,
4703    AtomWifiSettingInfo = 10194,
4704    AtomWifiComplexSettingInfo = 10195,
4705    AtomWifiConfiguredNetworkInfo = 10198,
4706}
4707impl AtomId {
4708    /// String value of the enum field names used in the ProtoBuf definition.
4709    ///
4710    /// The values are not transformed in any way and thus are considered stable
4711    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4712    pub fn as_str_name(&self) -> &'static str {
4713        match self {
4714            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
4715            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
4716            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
4717            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
4718            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
4719            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
4720            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
4721            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
4722            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
4723            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
4724            Self::AtomLongPartialWakelockStateChanged => {
4725                "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
4726            }
4727            Self::AtomMobileRadioPowerStateChanged => {
4728                "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
4729            }
4730            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
4731            Self::AtomActivityManagerSleepStateChanged => {
4732                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
4733            }
4734            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
4735            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
4736            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
4737            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
4738            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
4739            Self::AtomBatterySaverModeStateChanged => {
4740                "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
4741            }
4742            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
4743            Self::AtomDeviceIdlingModeStateChanged => {
4744                "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
4745            }
4746            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
4747            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
4748            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
4749            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
4750            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
4751            Self::AtomProcessLifeCycleStateChanged => {
4752                "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
4753            }
4754            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
4755            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
4756            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
4757            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
4758            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
4759            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
4760            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
4761            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
4762            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
4763            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
4764            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
4765            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
4766            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
4767            Self::AtomActivityForegroundStateChanged => {
4768                "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
4769            }
4770            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
4771            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
4772            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
4773            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
4774            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
4775            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
4776            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
4777            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
4778            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
4779            Self::AtomPictureInPictureStateChanged => {
4780                "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
4781            }
4782            Self::AtomWifiMulticastLockStateChanged => {
4783                "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
4784            }
4785            Self::AtomAppStartMemoryStateCaptured => {
4786                "ATOM_APP_START_MEMORY_STATE_CAPTURED"
4787            }
4788            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
4789            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
4790            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
4791            Self::AtomForegroundServiceStateChanged => {
4792                "ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
4793            }
4794            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
4795            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
4796            Self::AtomKeyguardBouncerStateChanged => {
4797                "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
4798            }
4799            Self::AtomKeyguardBouncerPasswordEntered => {
4800                "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
4801            }
4802            Self::AtomAppDied => "ATOM_APP_DIED",
4803            Self::AtomResourceConfigurationChanged => {
4804                "ATOM_RESOURCE_CONFIGURATION_CHANGED"
4805            }
4806            Self::AtomBluetoothEnabledStateChanged => {
4807                "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
4808            }
4809            Self::AtomBluetoothConnectionStateChanged => {
4810                "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
4811            }
4812            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
4813            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
4814            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
4815            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
4816            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
4817            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
4818            Self::AtomMobileConnectionStateChanged => {
4819                "ATOM_MOBILE_CONNECTION_STATE_CHANGED"
4820            }
4821            Self::AtomMobileRadioTechnologyChanged => {
4822                "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
4823            }
4824            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
4825            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
4826            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
4827            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
4828            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
4829            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
4830            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
4831            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
4832            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
4833            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
4834            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
4835            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
4836            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
4837            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
4838            Self::AtomSlowIo => "ATOM_SLOW_IO",
4839            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
4840            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
4841            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
4842            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
4843            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
4844            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
4845            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
4846            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
4847            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
4848            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
4849            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
4850            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
4851            Self::AtomDocsUiFileOpCopyMoveModeReported => {
4852                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
4853            }
4854            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
4855            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
4856            Self::AtomDocsUiInvalidScopedAccessRequest => {
4857                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
4858            }
4859            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
4860            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
4861            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
4862            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
4863            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
4864            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
4865            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
4866            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
4867            Self::AtomDocsUiPickerLaunchedFromReported => {
4868                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
4869            }
4870            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
4871            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
4872            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
4873            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
4874            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
4875            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
4876            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
4877            Self::AtomBluetoothLinkLayerConnectionEvent => {
4878                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
4879            }
4880            Self::AtomBluetoothAclConnectionStateChanged => {
4881                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
4882            }
4883            Self::AtomBluetoothScoConnectionStateChanged => {
4884                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
4885            }
4886            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
4887            Self::AtomAppOptimizedAfterDowngraded => {
4888                "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
4889            }
4890            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
4891            Self::AtomGnssNfwNotificationReported => {
4892                "ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
4893            }
4894            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
4895            Self::AtomUsbPortOverheatEventReported => {
4896                "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
4897            }
4898            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
4899            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
4900            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
4901            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
4902            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
4903            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
4904            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
4905            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
4906            Self::AtomBroadcastDispatchLatencyReported => {
4907                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
4908            }
4909            Self::AtomAttentionManagerServiceResultReported => {
4910                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
4911            }
4912            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
4913            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
4914            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
4915            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
4916            Self::AtomBiometricSystemHealthIssueDetected => {
4917                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
4918            }
4919            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
4920            Self::AtomScheduledJobConstraintChanged => {
4921                "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
4922            }
4923            Self::AtomBluetoothActiveDeviceChanged => {
4924                "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
4925            }
4926            Self::AtomBluetoothA2dpPlaybackStateChanged => {
4927                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
4928            }
4929            Self::AtomBluetoothA2dpCodecConfigChanged => {
4930                "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
4931            }
4932            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
4933                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
4934            }
4935            Self::AtomBluetoothA2dpAudioUnderrunReported => {
4936                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
4937            }
4938            Self::AtomBluetoothA2dpAudioOverrunReported => {
4939                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
4940            }
4941            Self::AtomBluetoothDeviceRssiReported => {
4942                "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
4943            }
4944            Self::AtomBluetoothDeviceFailedContactCounterReported => {
4945                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
4946            }
4947            Self::AtomBluetoothDeviceTxPowerLevelReported => {
4948                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
4949            }
4950            Self::AtomBluetoothHciTimeoutReported => {
4951                "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
4952            }
4953            Self::AtomBluetoothQualityReportReported => {
4954                "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
4955            }
4956            Self::AtomBluetoothDeviceInfoReported => {
4957                "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
4958            }
4959            Self::AtomBluetoothRemoteVersionInfoReported => {
4960                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
4961            }
4962            Self::AtomBluetoothSdpAttributeReported => {
4963                "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
4964            }
4965            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
4966            Self::AtomBluetoothClassicPairingEventReported => {
4967                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
4968            }
4969            Self::AtomBluetoothSmpPairingEventReported => {
4970                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
4971            }
4972            Self::AtomScreenTimeoutExtensionReported => {
4973                "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
4974            }
4975            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
4976            Self::AtomPermissionGrantRequestResultReported => {
4977                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
4978            }
4979            Self::AtomBluetoothSocketConnectionStateChanged => {
4980                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
4981            }
4982            Self::AtomDeviceIdentifierAccessDenied => {
4983                "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
4984            }
4985            Self::AtomBubbleDeveloperErrorReported => {
4986                "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
4987            }
4988            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
4989            Self::AtomAssistGestureFeedbackReported => {
4990                "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
4991            }
4992            Self::AtomAssistGestureProgressReported => {
4993                "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
4994            }
4995            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
4996            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
4997            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
4998            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
4999            Self::AtomAppInstallOnExternalStorageReported => {
5000                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
5001            }
5002            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
5003            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
5004            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
5005            Self::AtomSystemServerWatchdogOccurred => {
5006                "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
5007            }
5008            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
5009            Self::AtomBluetoothClassOfDeviceReported => {
5010                "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
5011            }
5012            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
5013            Self::AtomThermalThrottlingSeverityStateChanged => {
5014                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
5015            }
5016            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
5017            Self::AtomMediametricsAudiopolicyReported => {
5018                "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
5019            }
5020            Self::AtomMediametricsAudiorecordReported => {
5021                "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
5022            }
5023            Self::AtomMediametricsAudiothreadReported => {
5024                "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
5025            }
5026            Self::AtomMediametricsAudiotrackReported => {
5027                "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
5028            }
5029            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
5030            Self::AtomMediametricsDrmWidevineReported => {
5031                "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
5032            }
5033            Self::AtomMediametricsExtractorReported => {
5034                "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
5035            }
5036            Self::AtomMediametricsMediadrmReported => {
5037                "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
5038            }
5039            Self::AtomMediametricsNuplayerReported => {
5040                "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
5041            }
5042            Self::AtomMediametricsRecorderReported => {
5043                "ATOM_MEDIAMETRICS_RECORDER_REPORTED"
5044            }
5045            Self::AtomMediametricsDrmmanagerReported => {
5046                "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
5047            }
5048            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
5049            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
5050            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
5051            Self::AtomContentCaptureCallerMismatchReported => {
5052                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
5053            }
5054            Self::AtomContentCaptureServiceEvents => {
5055                "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
5056            }
5057            Self::AtomContentCaptureSessionEvents => {
5058                "ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
5059            }
5060            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
5061            Self::AtomLocationManagerApiUsageReported => {
5062                "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
5063            }
5064            Self::AtomReviewPermissionsFragmentResultReported => {
5065                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
5066            }
5067            Self::AtomRuntimePermissionsUpgradeResult => {
5068                "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
5069            }
5070            Self::AtomGrantPermissionsActivityButtonActions => {
5071                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
5072            }
5073            Self::AtomLocationAccessCheckNotificationAction => {
5074                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
5075            }
5076            Self::AtomAppPermissionFragmentActionReported => {
5077                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
5078            }
5079            Self::AtomAppPermissionFragmentViewed => {
5080                "ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
5081            }
5082            Self::AtomAppPermissionsFragmentViewed => {
5083                "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
5084            }
5085            Self::AtomPermissionAppsFragmentViewed => {
5086                "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
5087            }
5088            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
5089            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
5090            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
5091            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
5092            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
5093            Self::AtomBackGestureReportedReported => {
5094                "ATOM_BACK_GESTURE_REPORTED_REPORTED"
5095            }
5096            Self::AtomUpdateEngineUpdateAttemptReported => {
5097                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
5098            }
5099            Self::AtomUpdateEngineSuccessfulUpdateReported => {
5100                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
5101            }
5102            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
5103            Self::AtomAppCompatibilityChangeReported => {
5104                "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
5105            }
5106            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
5107            Self::AtomVmsClientConnectionStateChanged => {
5108                "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
5109            }
5110            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
5111            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
5112            Self::AtomMediaProviderPermissionRequested => {
5113                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
5114            }
5115            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
5116            Self::AtomMediaProviderIdleMaintenanceFinished => {
5117                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
5118            }
5119            Self::AtomRebootEscrowRecoveryReported => {
5120                "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
5121            }
5122            Self::AtomBootTimeEventDurationReported => {
5123                "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
5124            }
5125            Self::AtomBootTimeEventElapsedTimeReported => {
5126                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
5127            }
5128            Self::AtomBootTimeEventUtcTimeReported => {
5129                "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
5130            }
5131            Self::AtomBootTimeEventErrorCodeReported => {
5132                "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
5133            }
5134            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
5135            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
5136            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
5137            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
5138            Self::AtomIntegrityCheckResultReported => {
5139                "ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
5140            }
5141            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
5142            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
5143            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
5144            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
5145            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
5146            Self::AtomWifiConnectionResultReported => {
5147                "ATOM_WIFI_CONNECTION_RESULT_REPORTED"
5148            }
5149            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
5150            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
5151            Self::AtomForegroundServiceAppOpSessionEnded => {
5152                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
5153            }
5154            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
5155            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
5156            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
5157            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
5158            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
5159            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
5160            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
5161            Self::AtomUserLifecycleJourneyReported => {
5162                "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
5163            }
5164            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
5165            Self::AtomAccessibilityShortcutReported => {
5166                "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
5167            }
5168            Self::AtomAccessibilityServiceReported => {
5169                "ATOM_ACCESSIBILITY_SERVICE_REPORTED"
5170            }
5171            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
5172            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
5173            Self::AtomAutoRevokeNotificationClicked => {
5174                "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
5175            }
5176            Self::AtomAutoRevokeFragmentAppViewed => {
5177                "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
5178            }
5179            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
5180            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
5181                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
5182            }
5183            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
5184            Self::AtomAudioPowerUsageDataReported => {
5185                "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
5186            }
5187            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
5188            Self::AtomMediaoutputOpSwitchReported => {
5189                "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
5190            }
5191            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
5192            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
5193            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
5194            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
5195            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
5196            Self::AtomCarUserHalModifyUserRequestReported => {
5197                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
5198            }
5199            Self::AtomCarUserHalModifyUserResponseReported => {
5200                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
5201            }
5202            Self::AtomCarUserHalPostSwitchResponseReported => {
5203                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
5204            }
5205            Self::AtomCarUserHalInitialUserInfoRequestReported => {
5206                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
5207            }
5208            Self::AtomCarUserHalInitialUserInfoResponseReported => {
5209                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
5210            }
5211            Self::AtomCarUserHalUserAssociationRequestReported => {
5212                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
5213            }
5214            Self::AtomCarUserHalSetUserAssociationResponseReported => {
5215                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
5216            }
5217            Self::AtomNetworkIpProvisioningReported => {
5218                "ATOM_NETWORK_IP_PROVISIONING_REPORTED"
5219            }
5220            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
5221            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
5222            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
5223            Self::AtomMediametricsAudiorecorddeviceusageReported => {
5224                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
5225            }
5226            Self::AtomMediametricsAudiothreaddeviceusageReported => {
5227                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
5228            }
5229            Self::AtomMediametricsAudiotrackdeviceusageReported => {
5230                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
5231            }
5232            Self::AtomMediametricsAudiodeviceconnectionReported => {
5233                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
5234            }
5235            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
5236            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
5237            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
5238            Self::AtomContactsProviderStatusReported => {
5239                "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
5240            }
5241            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
5242            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
5243            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
5244            Self::AtomUiInteractionFrameInfoReported => {
5245                "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
5246            }
5247            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
5248            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
5249            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
5250            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
5251            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
5252            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
5253            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
5254            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
5255            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
5256            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
5257            Self::AtomMediametricsMediaparserReported => {
5258                "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
5259            }
5260            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
5261            Self::AtomTextClassifierApiUsageReported => {
5262                "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
5263            }
5264            Self::AtomCarWatchdogKillStatsReported => {
5265                "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
5266            }
5267            Self::AtomMediametricsPlaybackReported => {
5268                "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
5269            }
5270            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
5271            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
5272            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
5273            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
5274            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
5275            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
5276            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
5277            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
5278            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
5279            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
5280            Self::AtomImsServiceEntitlementUpdated => {
5281                "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
5282            }
5283            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
5284            Self::AtomSimSpecificSettingsRestored => {
5285                "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
5286            }
5287            Self::AtomTextClassifierDownloadReported => {
5288                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
5289            }
5290            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
5291            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
5292            Self::AtomBluetoothHalCrashReasonReported => {
5293                "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
5294            }
5295            Self::AtomRebootEscrowPreparationReported => {
5296                "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
5297            }
5298            Self::AtomRebootEscrowLskfCaptureReported => {
5299                "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
5300            }
5301            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
5302            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
5303            Self::AtomMediametricsAaudiostreamReported => {
5304                "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
5305            }
5306            Self::AtomMediaTranscodingSessionEnded => {
5307                "ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
5308            }
5309            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
5310            Self::AtomMagnificationModeWithImeOnReported => {
5311                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
5312            }
5313            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
5314            Self::AtomAppSearchPutDocumentStatsReported => {
5315                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
5316            }
5317            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
5318            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
5319            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
5320            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
5321            Self::AtomAuthPromptAuthenticateInvoked => {
5322                "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
5323            }
5324            Self::AtomAuthManagerCanAuthenticateInvoked => {
5325                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
5326            }
5327            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
5328            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
5329            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
5330            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
5331            Self::AtomLocationTimeZoneProviderStateChanged => {
5332                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
5333            }
5334            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
5335            Self::AtomTimeoutAutoExtendedReported => {
5336                "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
5337            }
5338            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
5339            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
5340            Self::AtomCarWatchdogIoOveruseStatsReported => {
5341                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
5342            }
5343            Self::AtomUserLevelHibernationStateChanged => {
5344                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
5345            }
5346            Self::AtomAppSearchInitializeStatsReported => {
5347                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
5348            }
5349            Self::AtomAppSearchQueryStatsReported => {
5350                "ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
5351            }
5352            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
5353            Self::AtomNetworkIpReachabilityMonitorReported => {
5354                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
5355            }
5356            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
5357            Self::AtomAnrOccurredProcessingStarted => {
5358                "ATOM_ANR_OCCURRED_PROCESSING_STARTED"
5359            }
5360            Self::AtomAppSearchRemoveStatsReported => {
5361                "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
5362            }
5363            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
5364            Self::AtomPermissionUsageFragmentInteraction => {
5365                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
5366            }
5367            Self::AtomPermissionDetailsInteraction => {
5368                "ATOM_PERMISSION_DETAILS_INTERACTION"
5369            }
5370            Self::AtomPrivacySensorToggleInteraction => {
5371                "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
5372            }
5373            Self::AtomPrivacyToggleDialogInteraction => {
5374                "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
5375            }
5376            Self::AtomAppSearchOptimizeStatsReported => {
5377                "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
5378            }
5379            Self::AtomNonA11yToolServiceWarningReport => {
5380                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
5381            }
5382            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
5383            Self::AtomSizeCompatRestartButtonEventReported => {
5384                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
5385            }
5386            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
5387            Self::AtomNetworkDnsHandshakeReported => {
5388                "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
5389            }
5390            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
5391            Self::AtomBluetoothLeBatchScanReportDelay => {
5392                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
5393            }
5394            Self::AtomAccessibilityFloatingMenuUiChanged => {
5395                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
5396            }
5397            Self::AtomNeuralnetworksCompilationCompleted => {
5398                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
5399            }
5400            Self::AtomNeuralnetworksExecutionCompleted => {
5401                "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
5402            }
5403            Self::AtomNeuralnetworksCompilationFailed => {
5404                "ATOM_NEURALNETWORKS_COMPILATION_FAILED"
5405            }
5406            Self::AtomNeuralnetworksExecutionFailed => {
5407                "ATOM_NEURALNETWORKS_EXECUTION_FAILED"
5408            }
5409            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
5410            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
5411            Self::AtomContextHubLoadedNanoappSnapshotReported => {
5412                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
5413            }
5414            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
5415            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
5416            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
5417            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
5418            Self::AtomUwbRangingMeasurementReceived => {
5419                "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
5420            }
5421            Self::AtomTextClassifierDownloadWorkScheduled => {
5422                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
5423            }
5424            Self::AtomTextClassifierDownloadWorkCompleted => {
5425                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
5426            }
5427            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
5428            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
5429            Self::AtomNearbyDeviceScanStateChanged => {
5430                "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
5431            }
5432            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
5433            Self::AtomMediametricsAudiotrackstatusReported => {
5434                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
5435            }
5436            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
5437            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
5438                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
5439            }
5440            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
5441            Self::AtomDisplayHbmBrightnessChanged => {
5442                "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
5443            }
5444            Self::AtomPersistentUriPermissionsFlushed => {
5445                "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
5446            }
5447            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
5448                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
5449            }
5450            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
5451            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
5452            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
5453            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
5454            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
5455            Self::AtomMediametricsAudiorecordstatusReported => {
5456                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
5457            }
5458            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
5459            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
5460            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
5461            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
5462            Self::AtomHotwordDetectorCreateRequested => {
5463                "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
5464            }
5465            Self::AtomHotwordDetectionServiceInitResultReported => {
5466                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
5467            }
5468            Self::AtomHotwordDetectionServiceRestarted => {
5469                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
5470            }
5471            Self::AtomHotwordDetectorKeyphraseTriggered => {
5472                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
5473            }
5474            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
5475            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
5476                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
5477            }
5478            Self::AtomContactsIndexerUpdateStatsReported => {
5479                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
5480            }
5481            Self::AtomAppBackgroundRestrictionsInfo => {
5482                "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
5483            }
5484            Self::AtomMmsSmsProviderGetThreadIdFailed => {
5485                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
5486            }
5487            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
5488                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
5489            }
5490            Self::AtomPermissionReminderNotificationInteracted => {
5491                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
5492            }
5493            Self::AtomRecentPermissionDecisionsInteracted => {
5494                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
5495            }
5496            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
5497            Self::AtomLeAudioConnectionSessionReported => {
5498                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
5499            }
5500            Self::AtomLeAudioBroadcastSessionReported => {
5501                "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
5502            }
5503            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
5504            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
5505            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
5506            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
5507                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
5508            }
5509            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
5510                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
5511            }
5512            Self::AtomAccessibilityTextReadingOptionsChanged => {
5513                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
5514            }
5515            Self::AtomWifiSetupFailureCrashReported => {
5516                "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
5517            }
5518            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
5519            Self::AtomIsolatedCompilationScheduled => {
5520                "ATOM_ISOLATED_COMPILATION_SCHEDULED"
5521            }
5522            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
5523            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
5524                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
5525            }
5526            Self::AtomSystemServerPreWatchdogOccurred => {
5527                "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
5528            }
5529            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
5530            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
5531            Self::AtomRemoteKeyProvisioningAttempt => {
5532                "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
5533            }
5534            Self::AtomRemoteKeyProvisioningNetworkInfo => {
5535                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
5536            }
5537            Self::AtomRemoteKeyProvisioningTiming => {
5538                "ATOM_REMOTE_KEY_PROVISIONING_TIMING"
5539            }
5540            Self::AtomMediaoutputOpInteractionReport => {
5541                "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
5542            }
5543            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
5544            Self::AtomAutofillPresentationEventReported => {
5545                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
5546            }
5547            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
5548            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
5549            Self::AtomSafetyCenterSystemEventReported => {
5550                "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
5551            }
5552            Self::AtomSafetyCenterInteractionReported => {
5553                "ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
5554            }
5555            Self::AtomSettingsProviderSettingChanged => {
5556                "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
5557            }
5558            Self::AtomBroadcastDeliveryEventReported => {
5559                "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
5560            }
5561            Self::AtomServiceRequestEventReported => {
5562                "ATOM_SERVICE_REQUEST_EVENT_REPORTED"
5563            }
5564            Self::AtomProviderAcquisitionEventReported => {
5565                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
5566            }
5567            Self::AtomBluetoothDeviceNameReported => {
5568                "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
5569            }
5570            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
5571            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
5572            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
5573            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
5574            Self::AtomPrivacySignalNotificationInteraction => {
5575                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
5576            }
5577            Self::AtomPrivacySignalIssueCardInteraction => {
5578                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
5579            }
5580            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
5581            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
5582            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
5583            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
5584            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
5585            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
5586            Self::AtomNetworkDnsServerSupportReported => {
5587                "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
5588            }
5589            Self::AtomVmBooted => "ATOM_VM_BOOTED",
5590            Self::AtomVmExited => "ATOM_VM_EXITED",
5591            Self::AtomAmbientBrightnessStatsReported => {
5592                "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
5593            }
5594            Self::AtomMediametricsSpatializercapabilitiesReported => {
5595                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
5596            }
5597            Self::AtomMediametricsSpatializerdeviceenabledReported => {
5598                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
5599            }
5600            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
5601                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
5602            }
5603            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
5604                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
5605            }
5606            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
5607            Self::AtomDeviceWideJobConstraintChanged => {
5608                "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
5609            }
5610            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
5611            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
5612            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
5613            Self::AtomSystemDefaultNetworkChanged => {
5614                "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
5615            }
5616            Self::AtomIwlanSetupDataCallResultReported => {
5617                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
5618            }
5619            Self::AtomIwlanPdnDisconnectedReasonReported => {
5620                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
5621            }
5622            Self::AtomAirplaneModeSessionReported => {
5623                "ATOM_AIRPLANE_MODE_SESSION_REPORTED"
5624            }
5625            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
5626            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
5627            Self::AtomPackageInstallationSessionReported => {
5628                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
5629            }
5630            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
5631            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
5632            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
5633            Self::AtomBluetoothDisconnectionReasonReported => {
5634                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
5635            }
5636            Self::AtomBluetoothLocalVersionsReported => {
5637                "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
5638            }
5639            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
5640                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
5641            }
5642            Self::AtomBluetoothLocalSupportedFeaturesReported => {
5643                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
5644            }
5645            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
5646            Self::AtomBrightnessConfigurationUpdated => {
5647                "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
5648            }
5649            Self::AtomWearMediaOutputSwitcherLaunched => {
5650                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
5651            }
5652            Self::AtomWearMediaOutputSwitcherFinished => {
5653                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
5654            }
5655            Self::AtomWearMediaOutputSwitcherConnectionReported => {
5656                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
5657            }
5658            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
5659                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
5660            }
5661            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
5662                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
5663            }
5664            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
5665                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
5666            }
5667            Self::AtomPackageManagerSnapshotReported => {
5668                "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
5669            }
5670            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
5671                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
5672            }
5673            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
5674                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
5675            }
5676            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
5677            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
5678                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
5679            }
5680            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
5681            Self::AtomWsWatchFaceFavoriteActionReported => {
5682                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
5683            }
5684            Self::AtomWsWatchFaceSetActionReported => {
5685                "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
5686            }
5687            Self::AtomPackageUninstallationReported => {
5688                "ATOM_PACKAGE_UNINSTALLATION_REPORTED"
5689            }
5690            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
5691            Self::AtomGameModeConfigurationChanged => {
5692                "ATOM_GAME_MODE_CONFIGURATION_CHANGED"
5693            }
5694            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
5695            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
5696            Self::AtomNetworkSliceDailyDataUsageReported => {
5697                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
5698            }
5699            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
5700            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
5701            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
5702            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
5703            Self::AtomGetTypeAccessedWithoutPermission => {
5704                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
5705            }
5706            Self::AtomMobileBundledAppInfoGathered => {
5707                "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
5708            }
5709            Self::AtomWsWatchFaceComplicationSetChanged => {
5710                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
5711            }
5712            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
5713            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
5714            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
5715            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
5716            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
5717            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
5718            Self::AtomPerformanceHintSessionReported => {
5719                "ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
5720            }
5721            Self::AtomMediametricsMidiDeviceCloseReported => {
5722                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
5723            }
5724            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
5725            Self::AtomHotwordAudioEgressEventReported => {
5726                "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
5727            }
5728            Self::AtomLocationEnabledStateChanged => {
5729                "ATOM_LOCATION_ENABLED_STATE_CHANGED"
5730            }
5731            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
5732            Self::AtomUsbComplianceWarningsReported => {
5733                "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
5734            }
5735            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
5736            Self::AtomMediaProviderVolumeRecoveryReported => {
5737                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
5738            }
5739            Self::AtomBiometricPropertiesCollected => {
5740                "ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
5741            }
5742            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
5743            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
5744            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
5745            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
5746            Self::AtomDeviceLogAccessEventReported => {
5747                "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
5748            }
5749            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
5750            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
5751            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
5752            Self::AtomNetworkValidationFailureStatsDailyReported => {
5753                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
5754            }
5755            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
5756            Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
5757            Self::AtomWsNotificationBridgemodeUpdated => {
5758                "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
5759            }
5760            Self::AtomWsNotificationDismissalActioned => {
5761                "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
5762            }
5763            Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
5764            Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
5765            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
5766            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
5767            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
5768            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
5769            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
5770            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
5771            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
5772            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
5773            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
5774            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
5775            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
5776            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
5777            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
5778            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
5779            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
5780            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
5781            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
5782            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
5783            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
5784            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
5785            Self::AtomTemperature => "ATOM_TEMPERATURE",
5786            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
5787            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
5788            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
5789            Self::AtomDiskStats => "ATOM_DISK_STATS",
5790            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
5791            Self::AtomAppSize => "ATOM_APP_SIZE",
5792            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
5793            Self::AtomProcStats => "ATOM_PROC_STATS",
5794            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
5795            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
5796            Self::AtomDiskIo => "ATOM_DISK_IO",
5797            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
5798            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
5799            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
5800            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
5801            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
5802            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
5803            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
5804            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
5805            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
5806            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
5807            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
5808            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
5809            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
5810            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
5811            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
5812            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
5813            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
5814            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
5815            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
5816            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
5817            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
5818            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
5819            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
5820            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
5821            Self::AtomAppOps => "ATOM_APP_OPS",
5822            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
5823            Self::AtomSurfaceflingerStatsGlobalInfo => {
5824                "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
5825            }
5826            Self::AtomSurfaceflingerStatsLayerInfo => {
5827                "ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
5828            }
5829            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
5830            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
5831            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
5832            Self::AtomDangerousPermissionStateSampled => {
5833                "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
5834            }
5835            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
5836            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
5837            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
5838            Self::AtomPackageNotificationPreferences => {
5839                "ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
5840            }
5841            Self::AtomPackageNotificationChannelPreferences => {
5842                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
5843            }
5844            Self::AtomPackageNotificationChannelGroupPreferences => {
5845                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
5846            }
5847            Self::AtomGnssStats => "ATOM_GNSS_STATS",
5848            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
5849            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
5850            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
5851            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
5852            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
5853            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
5854            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
5855            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
5856            Self::AtomBytesTransferByTagAndMetered => {
5857                "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
5858            }
5859            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
5860            Self::AtomGeneralExternalStorageAccessStats => {
5861                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
5862            }
5863            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
5864            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
5865            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
5866            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
5867            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
5868            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
5869            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
5870            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
5871            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
5872            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
5873            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
5874            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
5875            Self::AtomCpuCyclesPerThreadGroupCluster => {
5876                "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
5877            }
5878            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
5879            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
5880            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
5881            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
5882            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
5883            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
5884            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
5885            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
5886            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
5887            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
5888            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
5889            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
5890            Self::AtomBatteryUsageStatsBeforeReset => {
5891                "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
5892            }
5893            Self::AtomBatteryUsageStatsSinceReset => {
5894                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
5895            }
5896            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
5897                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
5898            }
5899            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
5900            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
5901            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
5902            Self::AtomVmstat => "ATOM_VMSTAT",
5903            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
5904                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
5905            }
5906            Self::AtomKeystore2KeyCreationWithAuthInfo => {
5907                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
5908            }
5909            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
5910                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
5911            }
5912            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
5913            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
5914                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
5915            }
5916            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
5917                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
5918            }
5919            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
5920            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
5921            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
5922            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
5923            Self::AtomAccessibilityFloatingMenuStats => {
5924                "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
5925            }
5926            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
5927            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
5928            Self::AtomCarWatchdogSystemIoUsageSummary => {
5929                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
5930            }
5931            Self::AtomCarWatchdogUidIoUsageSummary => {
5932                "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
5933            }
5934            Self::AtomImsRegistrationFeatureTagStats => {
5935                "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
5936            }
5937            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
5938            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
5939            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
5940            Self::AtomSipTransportFeatureTagStats => {
5941                "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
5942            }
5943            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
5944            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
5945            Self::AtomImsDedicatedBearerListenerEvent => {
5946                "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
5947            }
5948            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
5949            Self::AtomImsRegistrationServiceDescStats => {
5950                "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
5951            }
5952            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
5953            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
5954            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
5955            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
5956            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
5957            Self::AtomPersistentUriPermissionsAmountPerPackage => {
5958                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
5959            }
5960            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
5961            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
5962            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
5963            Self::AtomUserInfo => "ATOM_USER_INFO",
5964            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
5965            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
5966            Self::AtomRemoteKeyProvisioningErrorCounts => {
5967                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
5968            }
5969            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
5970            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
5971            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
5972            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
5973            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
5974            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
5975            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
5976            Self::AtomNetworkSelectionRematchReasonsInfo => {
5977                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
5978            }
5979            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
5980            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
5981            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
5982            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
5983            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
5984            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
5985                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
5986            }
5987            Self::AtomProcessState => "ATOM_PROCESS_STATE",
5988            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
5989            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
5990            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
5991            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
5992            Self::AtomWsFavouriteWatchFaceListSnapshot => {
5993                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
5994            }
5995            Self::AtomAccessibilityCheckResultReported => {
5996                "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED"
5997            }
5998            Self::AtomAdaptiveAuthUnlockAfterLockReported => {
5999                "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
6000            }
6001            Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
6002            Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
6003            Self::AtomThermalHeadroomThresholdsCalled => {
6004                "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
6005            }
6006            Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
6007            Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
6008            Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
6009            Self::AtomJsscriptengineLatencyReported => {
6010                "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
6011            }
6012            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
6013            Self::AtomAdServicesMesurementReportsUploaded => {
6014                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
6015            }
6016            Self::AtomMobileDataDownloadFileGroupStatusReported => {
6017                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
6018            }
6019            Self::AtomMobileDataDownloadDownloadResultReported => {
6020                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
6021            }
6022            Self::AtomAdServicesSettingsUsageReported => {
6023                "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
6024            }
6025            Self::AtomBackgroundFetchProcessReported => {
6026                "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
6027            }
6028            Self::AtomUpdateCustomAudienceProcessReported => {
6029                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
6030            }
6031            Self::AtomRunAdBiddingProcessReported => {
6032                "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
6033            }
6034            Self::AtomRunAdScoringProcessReported => {
6035                "ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
6036            }
6037            Self::AtomRunAdSelectionProcessReported => {
6038                "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
6039            }
6040            Self::AtomRunAdBiddingPerCaProcessReported => {
6041                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
6042            }
6043            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
6044                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
6045            }
6046            Self::AtomAdServicesMeasurementRegistrations => {
6047                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
6048            }
6049            Self::AtomAdServicesGetTopicsReported => {
6050                "ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
6051            }
6052            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
6053                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
6054            }
6055            Self::AtomAdServicesEpochComputationClassifierReported => {
6056                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6057            }
6058            Self::AtomAdServicesBackCompatGetTopicsReported => {
6059                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
6060            }
6061            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
6062                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6063            }
6064            Self::AtomAdServicesMeasurementDebugKeys => {
6065                "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
6066            }
6067            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
6068            Self::AtomAdServicesBackgroundJobsExecutionReported => {
6069                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
6070            }
6071            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
6072                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
6073            }
6074            Self::AtomAdServicesMeasurementAttribution => {
6075                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
6076            }
6077            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
6078            Self::AtomAdServicesMeasurementWipeout => {
6079                "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
6080            }
6081            Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
6082                "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
6083            }
6084            Self::AtomAdServicesEnrollmentDataStored => {
6085                "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
6086            }
6087            Self::AtomAdServicesEnrollmentFileDownloaded => {
6088                "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
6089            }
6090            Self::AtomAdServicesEnrollmentMatched => {
6091                "ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
6092            }
6093            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
6094            Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
6095            Self::AtomAdServicesMeasurementClickVerification => {
6096                "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
6097            }
6098            Self::AtomAdServicesEncryptionKeyFetched => {
6099                "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
6100            }
6101            Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
6102                "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
6103            }
6104            Self::AtomDestinationRegisteredBeacons => {
6105                "ATOM_DESTINATION_REGISTERED_BEACONS"
6106            }
6107            Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
6108            Self::AtomInteractionReportingTableCleared => {
6109                "ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
6110            }
6111            Self::AtomAppManifestConfigHelperCalled => {
6112                "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
6113            }
6114            Self::AtomAdFilteringProcessJoinCaReported => {
6115                "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
6116            }
6117            Self::AtomAdFilteringProcessAdSelectionReported => {
6118                "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
6119            }
6120            Self::AtomAdCounterHistogramUpdaterReported => {
6121                "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
6122            }
6123            Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
6124            Self::AtomKAnonImmediateSignJoinStatusReported => {
6125                "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
6126            }
6127            Self::AtomKAnonBackgroundJobStatusReported => {
6128                "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
6129            }
6130            Self::AtomKAnonInitializeStatusReported => {
6131                "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
6132            }
6133            Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
6134            Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
6135            Self::AtomKAnonKeyAttestationStatusReported => {
6136                "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
6137            }
6138            Self::AtomGetAdSelectionDataApiCalled => {
6139                "ATOM_GET_AD_SELECTION_DATA_API_CALLED"
6140            }
6141            Self::AtomGetAdSelectionDataBuyerInputGenerated => {
6142                "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
6143            }
6144            Self::AtomBackgroundJobSchedulingReported => {
6145                "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
6146            }
6147            Self::AtomTopicsEncryptionEpochComputationReported => {
6148                "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
6149            }
6150            Self::AtomTopicsEncryptionGetTopicsReported => {
6151                "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
6152            }
6153            Self::AtomAdservicesShellCommandCalled => {
6154                "ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
6155            }
6156            Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
6157            Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
6158            Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
6159            Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
6160            Self::AtomPersistAdSelectionResultCalled => {
6161                "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
6162            }
6163            Self::AtomServerAuctionKeyFetchCalled => {
6164                "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
6165            }
6166            Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
6167                "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
6168            }
6169            Self::AtomAdServicesMeasurementProcessOdpRegistration => {
6170                "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
6171            }
6172            Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
6173                "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
6174            }
6175            Self::AtomSelectAdsFromOutcomesApiCalled => {
6176                "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
6177            }
6178            Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
6179            Self::AtomAdServicesEnrollmentTransactionStats => {
6180                "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
6181            }
6182            Self::AtomAdServicesCobaltLoggerEventReported => {
6183                "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED"
6184            }
6185            Self::AtomAdServicesCobaltPeriodicJobEventReported => {
6186                "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED"
6187            }
6188            Self::AtomUpdateSignalsProcessReported => {
6189                "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED"
6190            }
6191            Self::AtomTopicsScheduleEpochJobSettingReported => {
6192                "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED"
6193            }
6194            Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
6195            Self::AtomAiWallpapersTemplateSelected => {
6196                "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
6197            }
6198            Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
6199            Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
6200            Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
6201            Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
6202            Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
6203            Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
6204            Self::AtomAppSearchSetSchemaStatsReported => {
6205                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
6206            }
6207            Self::AtomAppSearchSchemaMigrationStatsReported => {
6208                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
6209            }
6210            Self::AtomAppSearchUsageSearchIntentStatsReported => {
6211                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
6212            }
6213            Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
6214                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
6215            }
6216            Self::AtomAppSearchAppsIndexerStatsReported => {
6217                "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED"
6218            }
6219            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
6220            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
6221            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
6222            Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
6223            Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
6224            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
6225            Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
6226            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
6227            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
6228            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
6229            Self::AtomAutofillFillRequestReported => {
6230                "ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
6231            }
6232            Self::AtomAutofillFillResponseReported => {
6233                "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
6234            }
6235            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
6236            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
6237            Self::AtomAutofillFieldClassificationEventReported => {
6238                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
6239            }
6240            Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
6241            Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
6242            Self::AtomCarWakeupFromSuspendReported => {
6243                "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
6244            }
6245            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
6246            Self::AtomBluetoothHashedDeviceNameReported => {
6247                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
6248            }
6249            Self::AtomBluetoothL2capCocClientConnection => {
6250                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
6251            }
6252            Self::AtomBluetoothL2capCocServerConnection => {
6253                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
6254            }
6255            Self::AtomBluetoothLeSessionConnected => {
6256                "ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
6257            }
6258            Self::AtomRestrictedBluetoothDeviceNameReported => {
6259                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
6260            }
6261            Self::AtomBluetoothProfileConnectionAttempted => {
6262                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
6263            }
6264            Self::AtomBluetoothContentProfileErrorReported => {
6265                "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
6266            }
6267            Self::AtomBluetoothRfcommConnectionAttempted => {
6268                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
6269            }
6270            Self::AtomRemoteDeviceInformationWithMetricId => {
6271                "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
6272            }
6273            Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
6274            Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
6275            Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
6276            Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
6277            Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
6278            Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
6279            Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
6280            Self::AtomBluetoothCrossLayerEventReported => {
6281                "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
6282            }
6283            Self::AtomBroadcastAudioSessionReported => {
6284                "ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
6285            }
6286            Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
6287            Self::AtomBluetoothRfcommConnectionReportedAtClose => {
6288                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
6289            }
6290            Self::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
6291            Self::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
6292            Self::AtomCameraFeatureCombinationQueryEvent => {
6293                "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
6294            }
6295            Self::AtomCertificateTransparencyLogListStateChanged => {
6296                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED"
6297            }
6298            Self::AtomCertificateTransparencyLogListUpdateFailed => {
6299                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED"
6300            }
6301            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
6302            Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
6303            Self::AtomTetheringActiveSessionsReported => {
6304                "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
6305            }
6306            Self::AtomNetworkStatsRecorderFileOperated => {
6307                "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
6308            }
6309            Self::AtomCoreNetworkingTerribleErrorOccurred => {
6310                "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
6311            }
6312            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
6313            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
6314            Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
6315            Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
6316            Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
6317            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
6318            Self::AtomCredentialManagerInitPhaseReported => {
6319                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
6320            }
6321            Self::AtomCredentialManagerCandidatePhaseReported => {
6322                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
6323            }
6324            Self::AtomCredentialManagerFinalPhaseReported => {
6325                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
6326            }
6327            Self::AtomCredentialManagerTotalReported => {
6328                "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
6329            }
6330            Self::AtomCredentialManagerFinalnouidReported => {
6331                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
6332            }
6333            Self::AtomCredentialManagerGetReported => {
6334                "ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
6335            }
6336            Self::AtomCredentialManagerAuthClickReported => {
6337                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
6338            }
6339            Self::AtomCredentialManagerApiv2Called => {
6340                "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
6341            }
6342            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
6343            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
6344            Self::AtomCronetEngineBuilderInitialized => {
6345                "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
6346            }
6347            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
6348            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
6349            Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
6350            Self::AtomDesktopModeSessionTaskUpdate => {
6351                "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
6352            }
6353            Self::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
6354            Self::AtomDeviceLockCheckInRequestReported => {
6355                "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
6356            }
6357            Self::AtomDeviceLockProvisioningCompleteReported => {
6358                "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
6359            }
6360            Self::AtomDeviceLockKioskAppRequestReported => {
6361                "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
6362            }
6363            Self::AtomDeviceLockCheckInRetryReported => {
6364                "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
6365            }
6366            Self::AtomDeviceLockProvisionFailureReported => {
6367                "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
6368            }
6369            Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
6370                "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
6371            }
6372            Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
6373            Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
6374            Self::AtomDisplayModeDirectorVoteChanged => {
6375                "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
6376            }
6377            Self::AtomExternalDisplayStateChanged => {
6378                "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
6379            }
6380            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
6381            Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
6382            Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
6383            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
6384            Self::AtomExpressHistogramSampleReported => {
6385                "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
6386            }
6387            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
6388            Self::AtomExpressUidHistogramSampleReported => {
6389                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
6390            }
6391            Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
6392            Self::AtomFederatedComputeTrainingEventReported => {
6393                "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
6394            }
6395            Self::AtomExampleIteratorNextLatencyReported => {
6396                "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
6397            }
6398            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
6399            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
6400            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
6401            Self::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
6402            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
6403            Self::AtomStylusPredictionMetricsReported => {
6404                "ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
6405            }
6406            Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
6407            Self::AtomMediaProjectionStateChanged => {
6408                "ATOM_MEDIA_PROJECTION_STATE_CHANGED"
6409            }
6410            Self::AtomMediaProjectionTargetChanged => {
6411                "ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
6412            }
6413            Self::AtomExcessiveBinderProxyCountReported => {
6414                "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
6415            }
6416            Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
6417            Self::AtomMobileBytesTransferByProcState => {
6418                "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
6419            }
6420            Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
6421            Self::AtomSensitiveContentMediaProjectionSession => {
6422                "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
6423            }
6424            Self::AtomSensitiveNotificationAppProtectionSession => {
6425                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
6426            }
6427            Self::AtomSensitiveNotificationAppProtectionApplied => {
6428                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
6429            }
6430            Self::AtomSensitiveNotificationRedaction => {
6431                "ATOM_SENSITIVE_NOTIFICATION_REDACTION"
6432            }
6433            Self::AtomSensitiveContentAppProtection => {
6434                "ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
6435            }
6436            Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
6437            Self::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
6438            Self::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
6439            Self::AtomPowerSaveTempAllowlistChanged => {
6440                "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED"
6441            }
6442            Self::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
6443            Self::AtomContentOrFileUriEventReported => {
6444                "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED"
6445            }
6446            Self::AtomApplicationGrammaticalInflectionChanged => {
6447                "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
6448            }
6449            Self::AtomSystemGrammaticalInflectionChanged => {
6450                "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
6451            }
6452            Self::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
6453            Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
6454            Self::AtomHdmiSoundbarModeStatusReported => {
6455                "ATOM_HDMI_SOUNDBAR_MODE_STATUS_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::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
6468            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
6469            Self::AtomHealthConnectAppOpenedReported => {
6470                "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
6471            }
6472            Self::AtomHotwordEgressSizeAtomReported => {
6473                "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
6474            }
6475            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
6476            Self::AtomIkeLivenessCheckSessionValidated => {
6477                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
6478            }
6479            Self::AtomNegotiatedSecurityAssociation => {
6480                "ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
6481            }
6482            Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
6483            Self::AtomKeyboardSystemsEventReported => {
6484                "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
6485            }
6486            Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
6487            Self::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
6488            Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
6489            Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
6490            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
6491            Self::AtomChreSignificantMotionStateChanged => {
6492                "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
6493            }
6494            Self::AtomPopulationDensityProviderLoadingReported => {
6495                "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED"
6496            }
6497            Self::AtomDensityBasedCoarseLocationsUsageReported => {
6498                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED"
6499            }
6500            Self::AtomDensityBasedCoarseLocationsProviderQueryReported => {
6501                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED"
6502            }
6503            Self::AtomMediaCodecReclaimRequestCompleted => {
6504                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
6505            }
6506            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
6507            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
6508            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
6509            Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
6510            Self::AtomMteState => "ATOM_MTE_STATE",
6511            Self::AtomMicroxrDeviceBootCompleteReported => {
6512                "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED"
6513            }
6514            Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
6515            Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
6516            Self::AtomNfcPollingLoopNotificationReported => {
6517                "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
6518            }
6519            Self::AtomNfcProprietaryCapabilitiesReported => {
6520                "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
6521            }
6522            Self::AtomOndevicepersonalizationApiCalled => {
6523                "ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
6524            }
6525            Self::AtomComponentStateChangedReported => {
6526                "ATOM_COMPONENT_STATE_CHANGED_REPORTED"
6527            }
6528            Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
6529            Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
6530            Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
6531            Self::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
6532            Self::AtomPermissionRationaleDialogViewed => {
6533                "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
6534            }
6535            Self::AtomPermissionRationaleDialogActionReported => {
6536                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
6537            }
6538            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
6539                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
6540            }
6541            Self::AtomAppDataSharingUpdatesFragmentViewed => {
6542                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
6543            }
6544            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
6545                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
6546            }
6547            Self::AtomEnhancedConfirmationDialogResultReported => {
6548                "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
6549            }
6550            Self::AtomEnhancedConfirmationRestrictionCleared => {
6551                "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
6552            }
6553            Self::AtomPhotopickerSessionInfoReported => {
6554                "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
6555            }
6556            Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
6557            Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
6558            Self::AtomPhotopickerMediaItemStatusReported => {
6559                "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
6560            }
6561            Self::AtomPhotopickerPreviewInfoLogged => {
6562                "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
6563            }
6564            Self::AtomPhotopickerMenuInteractionLogged => {
6565                "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
6566            }
6567            Self::AtomPhotopickerBannerInteractionLogged => {
6568                "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
6569            }
6570            Self::AtomPhotopickerMediaLibraryInfoLogged => {
6571                "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
6572            }
6573            Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
6574            Self::AtomPhotopickerMediaGridSyncInfoReported => {
6575                "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
6576            }
6577            Self::AtomPhotopickerAlbumSyncInfoReported => {
6578                "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
6579            }
6580            Self::AtomPhotopickerSearchInfoReported => {
6581                "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
6582            }
6583            Self::AtomSearchDataExtractionDetailsReported => {
6584                "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
6585            }
6586            Self::AtomEmbeddedPhotopickerInfoReported => {
6587                "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
6588            }
6589            Self::AtomAtom9999 => "ATOM_ATOM_9999",
6590            Self::AtomAtom99999 => "ATOM_ATOM_99999",
6591            Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
6592            Self::AtomScreenTimeoutOverrideReported => {
6593                "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
6594            }
6595            Self::AtomScreenInteractiveSessionReported => {
6596                "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
6597            }
6598            Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
6599            Self::AtomMediaProviderDatabaseRollbackReported => {
6600                "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
6601            }
6602            Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
6603            Self::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
6604            Self::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
6605            Self::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
6606            Self::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
6607            Self::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
6608            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
6609            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
6610            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
6611            Self::AtomSandboxActivityEventOccurred => {
6612                "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
6613            }
6614            Self::AtomSdkSandboxRestrictedAccessInSession => {
6615                "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
6616            }
6617            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
6618            Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
6619            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
6620            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
6621            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
6622            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
6623            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
6624            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
6625            Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
6626            Self::AtomDisplaySwitchLatencyTracked => {
6627                "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
6628            }
6629            Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
6630            Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
6631            Self::AtomCommunalHubWidgetEventReported => {
6632                "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED"
6633            }
6634            Self::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
6635            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
6636            Self::AtomCallStats => "ATOM_CALL_STATS",
6637            Self::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
6638            Self::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
6639            Self::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
6640            Self::AtomCellularRadioPowerStateChanged => {
6641                "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
6642            }
6643            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
6644            Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
6645            Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
6646            Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
6647            Self::AtomIwlanUnderlyingNetworkValidationResultReported => {
6648                "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED"
6649            }
6650            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
6651            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
6652            Self::AtomQnsFallbackRestrictionChanged => {
6653                "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
6654            }
6655            Self::AtomQnsRatPreferenceMismatchInfo => {
6656                "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
6657            }
6658            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
6659            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
6660            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
6661            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
6662            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
6663            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
6664            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
6665            Self::AtomSatelliteSosMessageRecommender => {
6666                "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
6667            }
6668            Self::AtomCarrierRoamingSatelliteSession => {
6669                "ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
6670            }
6671            Self::AtomCarrierRoamingSatelliteControllerStats => {
6672                "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
6673            }
6674            Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
6675            Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
6676            Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
6677            Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
6678            Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
6679            Self::AtomThreadnetworkTelemetryDataReported => {
6680                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
6681            }
6682            Self::AtomThreadnetworkTopoEntryRepeated => {
6683                "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
6684            }
6685            Self::AtomThreadnetworkDeviceInfoReported => {
6686                "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
6687            }
6688            Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
6689            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
6690            Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
6691            Self::AtomTestUprobestatsAtomReported => {
6692                "ATOM_TEST_UPROBESTATS_ATOM_REPORTED"
6693            }
6694            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
6695            Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
6696            Self::AtomSysproxyBluetoothBytesTransfer => {
6697                "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
6698            }
6699            Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
6700            Self::AtomWearCompanionConnectionState => {
6701                "ATOM_WEAR_COMPANION_CONNECTION_STATE"
6702            }
6703            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
6704            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
6705            Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
6706            Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
6707                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
6708            }
6709            Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
6710                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
6711            }
6712            Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
6713                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
6714            }
6715            Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
6716            Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
6717            Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
6718            Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
6719            Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
6720            Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
6721            Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
6722            Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
6723            Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
6724            Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
6725            Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
6726            Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
6727            Self::AtomIgnoredInflationFailuresReported => {
6728                "ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
6729            }
6730            Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
6731            Self::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
6732            Self::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
6733            Self::AtomWearTimeSyncAttemptCompleted => {
6734                "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED"
6735            }
6736            Self::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
6737            Self::AtomWearAdaptiveSuspendStatsReported => {
6738                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
6739            }
6740            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
6741                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
6742            }
6743            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
6744                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
6745            }
6746            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
6747            Self::AtomWsIncomingCallActionReported => {
6748                "ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
6749            }
6750            Self::AtomWsCallDisconnectionReported => {
6751                "ATOM_WS_CALL_DISCONNECTION_REPORTED"
6752            }
6753            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
6754            Self::AtomWsCallUserExperienceLatencyReported => {
6755                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
6756            }
6757            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
6758            Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
6759            Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
6760                "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
6761            }
6762            Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
6763                "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
6764            }
6765            Self::AtomWsComplicationsImpactedNotificationEventReported => {
6766                "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
6767            }
6768            Self::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
6769            Self::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
6770            Self::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
6771            Self::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
6772            Self::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
6773            Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
6774            Self::AtomWsFavoriteWatchFaceSnapshot => {
6775                "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
6776            }
6777            Self::AtomWsPhotosWatchFaceFeatureSnapshot => {
6778                "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT"
6779            }
6780            Self::AtomWsWatchFaceCustomizationSnapshot => {
6781                "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT"
6782            }
6783            Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
6784            Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
6785            Self::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
6786            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
6787            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
6788            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
6789            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
6790            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
6791            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
6792            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
6793            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
6794            Self::AtomWifiAwareResourceUsingChanged => {
6795                "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
6796            }
6797            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
6798            Self::AtomWifiLocalOnlyRequestReceived => {
6799                "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
6800            }
6801            Self::AtomWifiLocalOnlyRequestScanTriggered => {
6802                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
6803            }
6804            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
6805            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
6806            Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
6807            Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
6808            Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
6809            Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
6810            Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
6811            Self::AtomScorerPredictionResultReported => {
6812                "ATOM_SCORER_PREDICTION_RESULT_REPORTED"
6813            }
6814            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
6815            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
6816            Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
6817            Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
6818            Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
6819        }
6820    }
6821    /// Creates an enum from field names used in the ProtoBuf definition.
6822    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6823        match value {
6824            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
6825            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
6826            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
6827            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
6828            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
6829            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
6830            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
6831            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
6832                Some(Self::AtomScheduledJobStateChanged)
6833            }
6834            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
6835            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
6836            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
6837                Some(Self::AtomLongPartialWakelockStateChanged)
6838            }
6839            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
6840                Some(Self::AtomMobileRadioPowerStateChanged)
6841            }
6842            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
6843                Some(Self::AtomWifiRadioPowerStateChanged)
6844            }
6845            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
6846                Some(Self::AtomActivityManagerSleepStateChanged)
6847            }
6848            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
6849                Some(Self::AtomMemoryFactorStateChanged)
6850            }
6851            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
6852                Some(Self::AtomExcessiveCpuUsageReported)
6853            }
6854            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
6855            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
6856                Some(Self::AtomProcessMemoryStatReported)
6857            }
6858            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
6859            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
6860                Some(Self::AtomBatterySaverModeStateChanged)
6861            }
6862            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
6863                Some(Self::AtomDeviceIdleModeStateChanged)
6864            }
6865            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
6866                Some(Self::AtomDeviceIdlingModeStateChanged)
6867            }
6868            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
6869            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
6870            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
6871            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
6872            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
6873            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
6874                Some(Self::AtomProcessLifeCycleStateChanged)
6875            }
6876            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
6877            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
6878            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
6879            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
6880            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
6881            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
6882            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
6883            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
6884            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
6885            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
6886                Some(Self::AtomWifiSignalStrengthChanged)
6887            }
6888            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
6889            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
6890                Some(Self::AtomPhoneSignalStrengthChanged)
6891            }
6892            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
6893            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
6894                Some(Self::AtomActivityForegroundStateChanged)
6895            }
6896            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
6897            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
6898            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
6899            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
6900            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
6901            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
6902            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
6903            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
6904            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
6905            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
6906                Some(Self::AtomPictureInPictureStateChanged)
6907            }
6908            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
6909                Some(Self::AtomWifiMulticastLockStateChanged)
6910            }
6911            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
6912                Some(Self::AtomAppStartMemoryStateCaptured)
6913            }
6914            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
6915            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
6916            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
6917            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
6918                Some(Self::AtomForegroundServiceStateChanged)
6919            }
6920            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
6921            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
6922            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
6923                Some(Self::AtomKeyguardBouncerStateChanged)
6924            }
6925            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
6926                Some(Self::AtomKeyguardBouncerPasswordEntered)
6927            }
6928            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
6929            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
6930                Some(Self::AtomResourceConfigurationChanged)
6931            }
6932            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
6933                Some(Self::AtomBluetoothEnabledStateChanged)
6934            }
6935            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
6936                Some(Self::AtomBluetoothConnectionStateChanged)
6937            }
6938            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
6939            "ATOM_USB_CONNECTOR_STATE_CHANGED" => {
6940                Some(Self::AtomUsbConnectorStateChanged)
6941            }
6942            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
6943            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
6944            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
6945            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
6946            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
6947                Some(Self::AtomMobileConnectionStateChanged)
6948            }
6949            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
6950                Some(Self::AtomMobileRadioTechnologyChanged)
6951            }
6952            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
6953            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
6954            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
6955            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
6956            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
6957            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
6958            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
6959            "ATOM_DEFERRED_JOB_STATS_REPORTED" => {
6960                Some(Self::AtomDeferredJobStatsReported)
6961            }
6962            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
6963            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
6964            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
6965            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
6966            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
6967            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
6968            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
6969            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
6970            "ATOM_PHONE_SERVICE_STATE_CHANGED" => {
6971                Some(Self::AtomPhoneServiceStateChanged)
6972            }
6973            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
6974            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
6975            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
6976            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
6977            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
6978            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
6979            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
6980            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
6981            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
6982            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
6983            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
6984                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
6985            }
6986            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
6987            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
6988            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
6989                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
6990            }
6991            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
6992            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
6993            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
6994            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
6995                Some(Self::AtomDocsUiUserActionReported)
6996            }
6997            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
6998            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
6999            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
7000            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
7001            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
7002                Some(Self::AtomDocsUiPickerLaunchedFromReported)
7003            }
7004            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
7005                Some(Self::AtomDocsUiPickResultReported)
7006            }
7007            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
7008                Some(Self::AtomDocsUiSearchModeReported)
7009            }
7010            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
7011                Some(Self::AtomDocsUiSearchTypeReported)
7012            }
7013            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
7014            "ATOM_RESCUE_PARTY_RESET_REPORTED" => {
7015                Some(Self::AtomRescuePartyResetReported)
7016            }
7017            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
7018            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
7019            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
7020                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
7021            }
7022            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
7023                Some(Self::AtomBluetoothAclConnectionStateChanged)
7024            }
7025            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
7026                Some(Self::AtomBluetoothScoConnectionStateChanged)
7027            }
7028            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
7029            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
7030                Some(Self::AtomAppOptimizedAfterDowngraded)
7031            }
7032            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
7033            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
7034                Some(Self::AtomGnssNfwNotificationReported)
7035            }
7036            "ATOM_GNSS_CONFIGURATION_REPORTED" => {
7037                Some(Self::AtomGnssConfigurationReported)
7038            }
7039            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
7040                Some(Self::AtomUsbPortOverheatEventReported)
7041            }
7042            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
7043            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
7044            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
7045            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
7046            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
7047            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
7048                Some(Self::AtomNfcHceTransactionOccurred)
7049            }
7050            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
7051            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
7052            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
7053                Some(Self::AtomBroadcastDispatchLatencyReported)
7054            }
7055            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
7056                Some(Self::AtomAttentionManagerServiceResultReported)
7057            }
7058            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
7059            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
7060            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
7061            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
7062            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
7063                Some(Self::AtomBiometricSystemHealthIssueDetected)
7064            }
7065            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
7066            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
7067                Some(Self::AtomScheduledJobConstraintChanged)
7068            }
7069            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
7070                Some(Self::AtomBluetoothActiveDeviceChanged)
7071            }
7072            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
7073                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
7074            }
7075            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
7076                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
7077            }
7078            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
7079                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
7080            }
7081            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
7082                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
7083            }
7084            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
7085                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
7086            }
7087            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
7088                Some(Self::AtomBluetoothDeviceRssiReported)
7089            }
7090            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
7091                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
7092            }
7093            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
7094                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
7095            }
7096            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
7097                Some(Self::AtomBluetoothHciTimeoutReported)
7098            }
7099            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
7100                Some(Self::AtomBluetoothQualityReportReported)
7101            }
7102            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
7103                Some(Self::AtomBluetoothDeviceInfoReported)
7104            }
7105            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
7106                Some(Self::AtomBluetoothRemoteVersionInfoReported)
7107            }
7108            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
7109                Some(Self::AtomBluetoothSdpAttributeReported)
7110            }
7111            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
7112                Some(Self::AtomBluetoothBondStateChanged)
7113            }
7114            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
7115                Some(Self::AtomBluetoothClassicPairingEventReported)
7116            }
7117            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
7118                Some(Self::AtomBluetoothSmpPairingEventReported)
7119            }
7120            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
7121                Some(Self::AtomScreenTimeoutExtensionReported)
7122            }
7123            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
7124            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
7125                Some(Self::AtomPermissionGrantRequestResultReported)
7126            }
7127            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
7128                Some(Self::AtomBluetoothSocketConnectionStateChanged)
7129            }
7130            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
7131                Some(Self::AtomDeviceIdentifierAccessDenied)
7132            }
7133            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
7134                Some(Self::AtomBubbleDeveloperErrorReported)
7135            }
7136            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
7137                Some(Self::AtomAssistGestureStageReported)
7138            }
7139            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
7140                Some(Self::AtomAssistGestureFeedbackReported)
7141            }
7142            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
7143                Some(Self::AtomAssistGestureProgressReported)
7144            }
7145            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
7146            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
7147            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
7148            "ATOM_PRIVACY_INDICATORS_INTERACTED" => {
7149                Some(Self::AtomPrivacyIndicatorsInteracted)
7150            }
7151            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
7152                Some(Self::AtomAppInstallOnExternalStorageReported)
7153            }
7154            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
7155            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
7156            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
7157            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
7158                Some(Self::AtomSystemServerWatchdogOccurred)
7159            }
7160            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
7161            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
7162                Some(Self::AtomBluetoothClassOfDeviceReported)
7163            }
7164            "ATOM_INTELLIGENCE_EVENT_REPORTED" => {
7165                Some(Self::AtomIntelligenceEventReported)
7166            }
7167            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
7168                Some(Self::AtomThermalThrottlingSeverityStateChanged)
7169            }
7170            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
7171                Some(Self::AtomRoleRequestResultReported)
7172            }
7173            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
7174                Some(Self::AtomMediametricsAudiopolicyReported)
7175            }
7176            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
7177                Some(Self::AtomMediametricsAudiorecordReported)
7178            }
7179            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
7180                Some(Self::AtomMediametricsAudiothreadReported)
7181            }
7182            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
7183                Some(Self::AtomMediametricsAudiotrackReported)
7184            }
7185            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
7186                Some(Self::AtomMediametricsCodecReported)
7187            }
7188            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
7189                Some(Self::AtomMediametricsDrmWidevineReported)
7190            }
7191            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
7192                Some(Self::AtomMediametricsExtractorReported)
7193            }
7194            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
7195                Some(Self::AtomMediametricsMediadrmReported)
7196            }
7197            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
7198                Some(Self::AtomMediametricsNuplayerReported)
7199            }
7200            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
7201                Some(Self::AtomMediametricsRecorderReported)
7202            }
7203            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
7204                Some(Self::AtomMediametricsDrmmanagerReported)
7205            }
7206            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
7207            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
7208            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
7209            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
7210                Some(Self::AtomContentCaptureCallerMismatchReported)
7211            }
7212            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
7213                Some(Self::AtomContentCaptureServiceEvents)
7214            }
7215            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
7216                Some(Self::AtomContentCaptureSessionEvents)
7217            }
7218            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
7219            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
7220                Some(Self::AtomLocationManagerApiUsageReported)
7221            }
7222            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
7223                Some(Self::AtomReviewPermissionsFragmentResultReported)
7224            }
7225            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
7226                Some(Self::AtomRuntimePermissionsUpgradeResult)
7227            }
7228            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
7229                Some(Self::AtomGrantPermissionsActivityButtonActions)
7230            }
7231            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
7232                Some(Self::AtomLocationAccessCheckNotificationAction)
7233            }
7234            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
7235                Some(Self::AtomAppPermissionFragmentActionReported)
7236            }
7237            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
7238                Some(Self::AtomAppPermissionFragmentViewed)
7239            }
7240            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
7241                Some(Self::AtomAppPermissionsFragmentViewed)
7242            }
7243            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
7244                Some(Self::AtomPermissionAppsFragmentViewed)
7245            }
7246            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
7247            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
7248            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
7249            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
7250            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
7251                Some(Self::AtomExclusionRectStateChanged)
7252            }
7253            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
7254                Some(Self::AtomBackGestureReportedReported)
7255            }
7256            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
7257                Some(Self::AtomUpdateEngineUpdateAttemptReported)
7258            }
7259            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
7260                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
7261            }
7262            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
7263            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
7264                Some(Self::AtomAppCompatibilityChangeReported)
7265            }
7266            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
7267            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
7268                Some(Self::AtomVmsClientConnectionStateChanged)
7269            }
7270            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
7271                Some(Self::AtomMediaProviderScanOccurred)
7272            }
7273            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
7274            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
7275                Some(Self::AtomMediaProviderPermissionRequested)
7276            }
7277            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
7278                Some(Self::AtomMediaProviderSchemaChanged)
7279            }
7280            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
7281                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
7282            }
7283            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
7284                Some(Self::AtomRebootEscrowRecoveryReported)
7285            }
7286            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
7287                Some(Self::AtomBootTimeEventDurationReported)
7288            }
7289            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
7290                Some(Self::AtomBootTimeEventElapsedTimeReported)
7291            }
7292            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
7293                Some(Self::AtomBootTimeEventUtcTimeReported)
7294            }
7295            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
7296                Some(Self::AtomBootTimeEventErrorCodeReported)
7297            }
7298            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
7299            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
7300            "ATOM_NOTIFICATION_PANEL_REPORTED" => {
7301                Some(Self::AtomNotificationPanelReported)
7302            }
7303            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
7304                Some(Self::AtomNotificationChannelModified)
7305            }
7306            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
7307                Some(Self::AtomIntegrityCheckResultReported)
7308            }
7309            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
7310            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
7311            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
7312            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
7313            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
7314            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
7315                Some(Self::AtomWifiConnectionResultReported)
7316            }
7317            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
7318            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
7319            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
7320                Some(Self::AtomForegroundServiceAppOpSessionEnded)
7321            }
7322            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
7323            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
7324            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
7325            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
7326            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
7327            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
7328            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
7329                Some(Self::AtomPackageInstallerV2Reported)
7330            }
7331            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
7332                Some(Self::AtomUserLifecycleJourneyReported)
7333            }
7334            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
7335                Some(Self::AtomUserLifecycleEventOccurred)
7336            }
7337            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
7338                Some(Self::AtomAccessibilityShortcutReported)
7339            }
7340            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
7341                Some(Self::AtomAccessibilityServiceReported)
7342            }
7343            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
7344                Some(Self::AtomDocsUiDragAndDropReported)
7345            }
7346            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
7347            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
7348                Some(Self::AtomAutoRevokeNotificationClicked)
7349            }
7350            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
7351                Some(Self::AtomAutoRevokeFragmentAppViewed)
7352            }
7353            "ATOM_AUTO_REVOKED_APP_INTERACTION" => {
7354                Some(Self::AtomAutoRevokedAppInteraction)
7355            }
7356            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
7357                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
7358            }
7359            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
7360            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
7361                Some(Self::AtomAudioPowerUsageDataReported)
7362            }
7363            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
7364            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
7365                Some(Self::AtomMediaoutputOpSwitchReported)
7366            }
7367            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
7368            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
7369            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
7370            "ATOM_ASSISTANT_INVOCATION_REPORTED" => {
7371                Some(Self::AtomAssistantInvocationReported)
7372            }
7373            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
7374            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
7375                Some(Self::AtomCarUserHalModifyUserRequestReported)
7376            }
7377            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
7378                Some(Self::AtomCarUserHalModifyUserResponseReported)
7379            }
7380            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
7381                Some(Self::AtomCarUserHalPostSwitchResponseReported)
7382            }
7383            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
7384                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
7385            }
7386            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
7387                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
7388            }
7389            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
7390                Some(Self::AtomCarUserHalUserAssociationRequestReported)
7391            }
7392            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
7393                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
7394            }
7395            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
7396                Some(Self::AtomNetworkIpProvisioningReported)
7397            }
7398            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
7399                Some(Self::AtomNetworkDhcpRenewReported)
7400            }
7401            "ATOM_NETWORK_VALIDATION_REPORTED" => {
7402                Some(Self::AtomNetworkValidationReported)
7403            }
7404            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
7405                Some(Self::AtomNetworkStackQuirkReported)
7406            }
7407            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
7408                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
7409            }
7410            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
7411                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
7412            }
7413            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
7414                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
7415            }
7416            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
7417                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
7418            }
7419            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
7420            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
7421            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
7422            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
7423                Some(Self::AtomContactsProviderStatusReported)
7424            }
7425            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
7426                Some(Self::AtomKeystoreKeyEventReported)
7427            }
7428            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
7429            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
7430            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
7431                Some(Self::AtomUiInteractionFrameInfoReported)
7432            }
7433            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
7434            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
7435            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
7436                Some(Self::AtomWifiConnectionStateChanged)
7437            }
7438            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
7439                Some(Self::AtomHdmiCecActiveSourceChanged)
7440            }
7441            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
7442            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
7443            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
7444            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
7445                Some(Self::AtomCarrierIdMismatchReported)
7446            }
7447            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
7448            "ATOM_DATA_STALL_RECOVERY_REPORTED" => {
7449                Some(Self::AtomDataStallRecoveryReported)
7450            }
7451            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
7452                Some(Self::AtomMediametricsMediaparserReported)
7453            }
7454            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
7455            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
7456                Some(Self::AtomTextClassifierApiUsageReported)
7457            }
7458            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
7459                Some(Self::AtomCarWatchdogKillStatsReported)
7460            }
7461            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
7462                Some(Self::AtomMediametricsPlaybackReported)
7463            }
7464            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
7465            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
7466                Some(Self::AtomMediaPlaybackStateChanged)
7467            }
7468            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
7469                Some(Self::AtomMediaPlaybackErrorReported)
7470            }
7471            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
7472                Some(Self::AtomMediaPlaybackTrackChanged)
7473            }
7474            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
7475            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
7476            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
7477            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
7478            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
7479            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
7480            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
7481                Some(Self::AtomImsServiceEntitlementUpdated)
7482            }
7483            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
7484            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
7485                Some(Self::AtomSimSpecificSettingsRestored)
7486            }
7487            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
7488                Some(Self::AtomTextClassifierDownloadReported)
7489            }
7490            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
7491            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
7492            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
7493                Some(Self::AtomBluetoothHalCrashReasonReported)
7494            }
7495            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
7496                Some(Self::AtomRebootEscrowPreparationReported)
7497            }
7498            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
7499                Some(Self::AtomRebootEscrowLskfCaptureReported)
7500            }
7501            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
7502                Some(Self::AtomRebootEscrowRebootReported)
7503            }
7504            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
7505            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
7506                Some(Self::AtomMediametricsAaudiostreamReported)
7507            }
7508            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
7509                Some(Self::AtomMediaTranscodingSessionEnded)
7510            }
7511            "ATOM_MAGNIFICATION_USAGE_REPORTED" => {
7512                Some(Self::AtomMagnificationUsageReported)
7513            }
7514            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
7515                Some(Self::AtomMagnificationModeWithImeOnReported)
7516            }
7517            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
7518                Some(Self::AtomAppSearchCallStatsReported)
7519            }
7520            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
7521                Some(Self::AtomAppSearchPutDocumentStatsReported)
7522            }
7523            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
7524            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
7525            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
7526            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
7527            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
7528                Some(Self::AtomAuthPromptAuthenticateInvoked)
7529            }
7530            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
7531                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
7532            }
7533            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
7534            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
7535            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
7536            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
7537                Some(Self::AtomLongRebootBlockingReported)
7538            }
7539            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
7540                Some(Self::AtomLocationTimeZoneProviderStateChanged)
7541            }
7542            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
7543            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
7544                Some(Self::AtomTimeoutAutoExtendedReported)
7545            }
7546            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
7547            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
7548            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
7549                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
7550            }
7551            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
7552                Some(Self::AtomUserLevelHibernationStateChanged)
7553            }
7554            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
7555                Some(Self::AtomAppSearchInitializeStatsReported)
7556            }
7557            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
7558                Some(Self::AtomAppSearchQueryStatsReported)
7559            }
7560            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
7561            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
7562                Some(Self::AtomNetworkIpReachabilityMonitorReported)
7563            }
7564            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
7565            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
7566                Some(Self::AtomAnrOccurredProcessingStarted)
7567            }
7568            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
7569                Some(Self::AtomAppSearchRemoveStatsReported)
7570            }
7571            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
7572            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
7573                Some(Self::AtomPermissionUsageFragmentInteraction)
7574            }
7575            "ATOM_PERMISSION_DETAILS_INTERACTION" => {
7576                Some(Self::AtomPermissionDetailsInteraction)
7577            }
7578            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
7579                Some(Self::AtomPrivacySensorToggleInteraction)
7580            }
7581            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
7582                Some(Self::AtomPrivacyToggleDialogInteraction)
7583            }
7584            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
7585                Some(Self::AtomAppSearchOptimizeStatsReported)
7586            }
7587            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
7588                Some(Self::AtomNonA11yToolServiceWarningReport)
7589            }
7590            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
7591            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
7592                Some(Self::AtomSizeCompatRestartButtonEventReported)
7593            }
7594            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
7595            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
7596                Some(Self::AtomNetworkDnsHandshakeReported)
7597            }
7598            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
7599                Some(Self::AtomBluetoothCodePathCounter)
7600            }
7601            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
7602                Some(Self::AtomBluetoothLeBatchScanReportDelay)
7603            }
7604            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
7605                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
7606            }
7607            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
7608                Some(Self::AtomNeuralnetworksCompilationCompleted)
7609            }
7610            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
7611                Some(Self::AtomNeuralnetworksExecutionCompleted)
7612            }
7613            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
7614                Some(Self::AtomNeuralnetworksCompilationFailed)
7615            }
7616            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
7617                Some(Self::AtomNeuralnetworksExecutionFailed)
7618            }
7619            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
7620            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
7621            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
7622                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
7623            }
7624            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
7625                Some(Self::AtomChreCodeDownloadTransacted)
7626            }
7627            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
7628            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
7629            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
7630            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
7631                Some(Self::AtomUwbRangingMeasurementReceived)
7632            }
7633            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
7634                Some(Self::AtomTextClassifierDownloadWorkScheduled)
7635            }
7636            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
7637                Some(Self::AtomTextClassifierDownloadWorkCompleted)
7638            }
7639            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
7640            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
7641            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
7642                Some(Self::AtomNearbyDeviceScanStateChanged)
7643            }
7644            "ATOM_APPLICATION_LOCALES_CHANGED" => {
7645                Some(Self::AtomApplicationLocalesChanged)
7646            }
7647            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
7648                Some(Self::AtomMediametricsAudiotrackstatusReported)
7649            }
7650            "ATOM_FOLD_STATE_DURATION_REPORTED" => {
7651                Some(Self::AtomFoldStateDurationReported)
7652            }
7653            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
7654                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
7655            }
7656            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
7657            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
7658                Some(Self::AtomDisplayHbmBrightnessChanged)
7659            }
7660            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
7661                Some(Self::AtomPersistentUriPermissionsFlushed)
7662            }
7663            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
7664                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
7665            }
7666            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
7667            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
7668            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
7669            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
7670                Some(Self::AtomWearSettingsUiInteracted)
7671            }
7672            "ATOM_TRACING_SERVICE_REPORT_EVENT" => {
7673                Some(Self::AtomTracingServiceReportEvent)
7674            }
7675            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
7676                Some(Self::AtomMediametricsAudiorecordstatusReported)
7677            }
7678            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
7679            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
7680            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
7681                Some(Self::AtomWifiP2pConnectionReported)
7682            }
7683            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
7684            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
7685                Some(Self::AtomHotwordDetectorCreateRequested)
7686            }
7687            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
7688                Some(Self::AtomHotwordDetectionServiceInitResultReported)
7689            }
7690            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
7691                Some(Self::AtomHotwordDetectionServiceRestarted)
7692            }
7693            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
7694                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
7695            }
7696            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
7697            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
7698                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
7699            }
7700            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
7701                Some(Self::AtomContactsIndexerUpdateStatsReported)
7702            }
7703            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
7704                Some(Self::AtomAppBackgroundRestrictionsInfo)
7705            }
7706            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
7707                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
7708            }
7709            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
7710                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
7711            }
7712            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
7713                Some(Self::AtomPermissionReminderNotificationInteracted)
7714            }
7715            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
7716                Some(Self::AtomRecentPermissionDecisionsInteracted)
7717            }
7718            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
7719                Some(Self::AtomGnssPsdsDownloadReported)
7720            }
7721            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
7722                Some(Self::AtomLeAudioConnectionSessionReported)
7723            }
7724            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
7725                Some(Self::AtomLeAudioBroadcastSessionReported)
7726            }
7727            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
7728            "ATOM_TASK_MANAGER_EVENT_REPORTED" => {
7729                Some(Self::AtomTaskManagerEventReported)
7730            }
7731            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
7732            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
7733                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
7734            }
7735            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
7736                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
7737            }
7738            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
7739                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
7740            }
7741            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
7742                Some(Self::AtomWifiSetupFailureCrashReported)
7743            }
7744            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
7745            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
7746                Some(Self::AtomIsolatedCompilationScheduled)
7747            }
7748            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
7749            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
7750                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
7751            }
7752            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
7753                Some(Self::AtomSystemServerPreWatchdogOccurred)
7754            }
7755            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
7756            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
7757            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
7758                Some(Self::AtomRemoteKeyProvisioningAttempt)
7759            }
7760            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
7761                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
7762            }
7763            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
7764                Some(Self::AtomRemoteKeyProvisioningTiming)
7765            }
7766            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
7767                Some(Self::AtomMediaoutputOpInteractionReport)
7768            }
7769            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
7770            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
7771                Some(Self::AtomAutofillPresentationEventReported)
7772            }
7773            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
7774            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
7775                Some(Self::AtomSafetySourceStateCollected)
7776            }
7777            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
7778                Some(Self::AtomSafetyCenterSystemEventReported)
7779            }
7780            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
7781                Some(Self::AtomSafetyCenterInteractionReported)
7782            }
7783            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
7784                Some(Self::AtomSettingsProviderSettingChanged)
7785            }
7786            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
7787                Some(Self::AtomBroadcastDeliveryEventReported)
7788            }
7789            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
7790                Some(Self::AtomServiceRequestEventReported)
7791            }
7792            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
7793                Some(Self::AtomProviderAcquisitionEventReported)
7794            }
7795            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
7796                Some(Self::AtomBluetoothDeviceNameReported)
7797            }
7798            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
7799            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
7800            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
7801            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
7802                Some(Self::AtomCbReceiverFeatureChanged)
7803            }
7804            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
7805                Some(Self::AtomPrivacySignalNotificationInteraction)
7806            }
7807            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
7808                Some(Self::AtomPrivacySignalIssueCardInteraction)
7809            }
7810            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
7811                Some(Self::AtomPrivacySignalsJobFailure)
7812            }
7813            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
7814            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
7815            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
7816            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
7817            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
7818            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
7819                Some(Self::AtomNetworkDnsServerSupportReported)
7820            }
7821            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
7822            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
7823            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
7824                Some(Self::AtomAmbientBrightnessStatsReported)
7825            }
7826            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
7827                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
7828            }
7829            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
7830                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
7831            }
7832            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
7833                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
7834            }
7835            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
7836                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
7837            }
7838            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
7839            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
7840                Some(Self::AtomDeviceWideJobConstraintChanged)
7841            }
7842            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
7843            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
7844            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
7845            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
7846                Some(Self::AtomSystemDefaultNetworkChanged)
7847            }
7848            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
7849                Some(Self::AtomIwlanSetupDataCallResultReported)
7850            }
7851            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
7852                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
7853            }
7854            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
7855                Some(Self::AtomAirplaneModeSessionReported)
7856            }
7857            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
7858            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
7859            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
7860                Some(Self::AtomPackageInstallationSessionReported)
7861            }
7862            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
7863                Some(Self::AtomDefaultNetworkRematchInfo)
7864            }
7865            "ATOM_NETWORK_SELECTION_PERFORMANCE" => {
7866                Some(Self::AtomNetworkSelectionPerformance)
7867            }
7868            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
7869            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
7870                Some(Self::AtomBluetoothDisconnectionReasonReported)
7871            }
7872            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
7873                Some(Self::AtomBluetoothLocalVersionsReported)
7874            }
7875            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
7876                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
7877            }
7878            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
7879                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
7880            }
7881            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
7882            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
7883                Some(Self::AtomBrightnessConfigurationUpdated)
7884            }
7885            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
7886                Some(Self::AtomWearMediaOutputSwitcherLaunched)
7887            }
7888            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
7889                Some(Self::AtomWearMediaOutputSwitcherFinished)
7890            }
7891            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
7892                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
7893            }
7894            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
7895                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
7896            }
7897            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
7898                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
7899            }
7900            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
7901                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
7902            }
7903            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
7904                Some(Self::AtomPackageManagerSnapshotReported)
7905            }
7906            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
7907                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
7908            }
7909            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
7910                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
7911            }
7912            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
7913            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
7914                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
7915            }
7916            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
7917            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
7918                Some(Self::AtomWsWatchFaceFavoriteActionReported)
7919            }
7920            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
7921                Some(Self::AtomWsWatchFaceSetActionReported)
7922            }
7923            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
7924                Some(Self::AtomPackageUninstallationReported)
7925            }
7926            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
7927            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
7928                Some(Self::AtomGameModeConfigurationChanged)
7929            }
7930            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
7931            "ATOM_NETWORK_SLICE_SESSION_ENDED" => {
7932                Some(Self::AtomNetworkSliceSessionEnded)
7933            }
7934            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
7935                Some(Self::AtomNetworkSliceDailyDataUsageReported)
7936            }
7937            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
7938            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
7939            "ATOM_NFC_READER_CONFLICT_OCCURRED" => {
7940                Some(Self::AtomNfcReaderConflictOccurred)
7941            }
7942            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
7943            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
7944                Some(Self::AtomGetTypeAccessedWithoutPermission)
7945            }
7946            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
7947                Some(Self::AtomMobileBundledAppInfoGathered)
7948            }
7949            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
7950                Some(Self::AtomWsWatchFaceComplicationSetChanged)
7951            }
7952            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
7953            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
7954            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
7955            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
7956            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
7957            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
7958                Some(Self::AtomUnsafeIntentEventReported)
7959            }
7960            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
7961                Some(Self::AtomPerformanceHintSessionReported)
7962            }
7963            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
7964                Some(Self::AtomMediametricsMidiDeviceCloseReported)
7965            }
7966            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
7967            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
7968                Some(Self::AtomHotwordAudioEgressEventReported)
7969            }
7970            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
7971                Some(Self::AtomLocationEnabledStateChanged)
7972            }
7973            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
7974            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
7975                Some(Self::AtomUsbComplianceWarningsReported)
7976            }
7977            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
7978                Some(Self::AtomAppSupportedLocalesChanged)
7979            }
7980            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
7981                Some(Self::AtomMediaProviderVolumeRecoveryReported)
7982            }
7983            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
7984                Some(Self::AtomBiometricPropertiesCollected)
7985            }
7986            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
7987            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
7988            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
7989            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
7990            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
7991                Some(Self::AtomDeviceLogAccessEventReported)
7992            }
7993            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
7994            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
7995            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
7996            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
7997                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
7998            }
7999            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
8000            "ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
8001            "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
8002                Some(Self::AtomWsNotificationBridgemodeUpdated)
8003            }
8004            "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
8005                Some(Self::AtomWsNotificationDismissalActioned)
8006            }
8007            "ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
8008            "ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
8009            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
8010            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
8011                Some(Self::AtomWifiBytesTransferByFgBg)
8012            }
8013            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
8014            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
8015                Some(Self::AtomMobileBytesTransferByFgBg)
8016            }
8017            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
8018            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
8019            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
8020            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
8021            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
8022            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
8023            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
8024            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
8025            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
8026            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
8027            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
8028            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
8029            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
8030            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
8031            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
8032            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
8033            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
8034            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
8035            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
8036            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
8037            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
8038            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
8039            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
8040            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
8041            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
8042            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
8043            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
8044            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
8045            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
8046            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
8047            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
8048            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
8049            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
8050                Some(Self::AtomOnDevicePowerMeasurement)
8051            }
8052            "ATOM_DEVICE_CALCULATED_POWER_USE" => {
8053                Some(Self::AtomDeviceCalculatedPowerUse)
8054            }
8055            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
8056                Some(Self::AtomProcessMemoryHighWaterMark)
8057            }
8058            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
8059            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
8060            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
8061            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
8062            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
8063                Some(Self::AtomDebugFailingElapsedClock)
8064            }
8065            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
8066            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
8067            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
8068            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
8069            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
8070            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
8071            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
8072            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
8073            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
8074            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
8075                Some(Self::AtomAppsOnExternalStorageInfo)
8076            }
8077            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
8078            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
8079            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
8080            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
8081                Some(Self::AtomProcessSystemIonHeapSize)
8082            }
8083            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
8084                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
8085            }
8086            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
8087                Some(Self::AtomSurfaceflingerStatsLayerInfo)
8088            }
8089            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
8090            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
8091            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
8092            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
8093                Some(Self::AtomDangerousPermissionStateSampled)
8094            }
8095            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
8096            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
8097            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
8098            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
8099                Some(Self::AtomPackageNotificationPreferences)
8100            }
8101            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
8102                Some(Self::AtomPackageNotificationChannelPreferences)
8103            }
8104            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
8105                Some(Self::AtomPackageNotificationChannelGroupPreferences)
8106            }
8107            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
8108            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
8109            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
8110            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
8111            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
8112            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
8113                Some(Self::AtomSupportedRadioAccessFamily)
8114            }
8115            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
8116            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
8117            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
8118            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
8119                Some(Self::AtomBytesTransferByTagAndMetered)
8120            }
8121            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
8122            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
8123                Some(Self::AtomGeneralExternalStorageAccessStats)
8124            }
8125            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
8126            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
8127            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
8128            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
8129            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
8130            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
8131                Some(Self::AtomCellularDataServiceSwitch)
8132            }
8133            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
8134            "ATOM_IMS_REGISTRATION_TERMINATION" => {
8135                Some(Self::AtomImsRegistrationTermination)
8136            }
8137            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
8138            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
8139            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
8140            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
8141            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
8142                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
8143            }
8144            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
8145            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
8146            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
8147            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
8148            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
8149            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
8150            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
8151            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
8152            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
8153            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
8154            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
8155            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
8156            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
8157                Some(Self::AtomBatteryUsageStatsBeforeReset)
8158            }
8159            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
8160                Some(Self::AtomBatteryUsageStatsSinceReset)
8161            }
8162            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
8163                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
8164            }
8165            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
8166                Some(Self::AtomInstalledIncrementalPackage)
8167            }
8168            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
8169            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
8170            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
8171            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
8172                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
8173            }
8174            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
8175                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
8176            }
8177            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
8178                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
8179            }
8180            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
8181                Some(Self::AtomKeystore2AtomWithOverflow)
8182            }
8183            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
8184                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
8185            }
8186            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
8187                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
8188            }
8189            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
8190            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
8191            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
8192            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
8193                Some(Self::AtomAccessibilityShortcutStats)
8194            }
8195            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
8196                Some(Self::AtomAccessibilityFloatingMenuStats)
8197            }
8198            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
8199                Some(Self::AtomDataUsageBytesTransferV2)
8200            }
8201            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
8202            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
8203                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
8204            }
8205            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
8206                Some(Self::AtomCarWatchdogUidIoUsageSummary)
8207            }
8208            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
8209                Some(Self::AtomImsRegistrationFeatureTagStats)
8210            }
8211            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
8212                Some(Self::AtomRcsClientProvisioningStats)
8213            }
8214            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
8215            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
8216            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
8217                Some(Self::AtomSipTransportFeatureTagStats)
8218            }
8219            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
8220            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
8221            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
8222                Some(Self::AtomImsDedicatedBearerListenerEvent)
8223            }
8224            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
8225            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
8226                Some(Self::AtomImsRegistrationServiceDescStats)
8227            }
8228            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
8229            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
8230            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
8231            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
8232            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
8233            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
8234                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
8235            }
8236            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
8237            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
8238                Some(Self::AtomPinnedFileSizesPerPackage)
8239            }
8240            "ATOM_PENDING_INTENTS_PER_PACKAGE" => {
8241                Some(Self::AtomPendingIntentsPerPackage)
8242            }
8243            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
8244            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
8245                Some(Self::AtomTelephonyNetworkRequestsV2)
8246            }
8247            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
8248                Some(Self::AtomDeviceTelephonyProperties)
8249            }
8250            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
8251                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
8252            }
8253            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
8254            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
8255            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
8256            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
8257            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
8258            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
8259            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
8260            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
8261                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
8262            }
8263            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
8264            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
8265            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
8266            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
8267                Some(Self::AtomNetworkSliceRequestCount)
8268            }
8269            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
8270            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
8271                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
8272            }
8273            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
8274            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
8275            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
8276            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
8277            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
8278            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
8279                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
8280            }
8281            "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED" => {
8282                Some(Self::AtomAccessibilityCheckResultReported)
8283            }
8284            "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
8285                Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
8286            }
8287            "ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
8288            "ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
8289            "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
8290                Some(Self::AtomThermalHeadroomThresholdsCalled)
8291            }
8292            "ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
8293                Some(Self::AtomAdpfHintSessionTidCleanup)
8294            }
8295            "ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
8296                Some(Self::AtomThermalHeadroomThresholds)
8297            }
8298            "ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
8299            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
8300                Some(Self::AtomJsscriptengineLatencyReported)
8301            }
8302            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
8303            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
8304                Some(Self::AtomAdServicesMesurementReportsUploaded)
8305            }
8306            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
8307                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
8308            }
8309            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
8310                Some(Self::AtomMobileDataDownloadDownloadResultReported)
8311            }
8312            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
8313                Some(Self::AtomAdServicesSettingsUsageReported)
8314            }
8315            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
8316                Some(Self::AtomBackgroundFetchProcessReported)
8317            }
8318            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
8319                Some(Self::AtomUpdateCustomAudienceProcessReported)
8320            }
8321            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
8322                Some(Self::AtomRunAdBiddingProcessReported)
8323            }
8324            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
8325                Some(Self::AtomRunAdScoringProcessReported)
8326            }
8327            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
8328                Some(Self::AtomRunAdSelectionProcessReported)
8329            }
8330            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
8331                Some(Self::AtomRunAdBiddingPerCaProcessReported)
8332            }
8333            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
8334                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
8335            }
8336            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
8337                Some(Self::AtomAdServicesMeasurementRegistrations)
8338            }
8339            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
8340                Some(Self::AtomAdServicesGetTopicsReported)
8341            }
8342            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
8343                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
8344            }
8345            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
8346                Some(Self::AtomAdServicesEpochComputationClassifierReported)
8347            }
8348            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
8349                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
8350            }
8351            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
8352                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
8353            }
8354            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
8355                Some(Self::AtomAdServicesMeasurementDebugKeys)
8356            }
8357            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
8358            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
8359                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
8360            }
8361            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
8362                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
8363            }
8364            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
8365                Some(Self::AtomAdServicesMeasurementAttribution)
8366            }
8367            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
8368                Some(Self::AtomAdServicesMeasurementJobs)
8369            }
8370            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
8371                Some(Self::AtomAdServicesMeasurementWipeout)
8372            }
8373            "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
8374                Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
8375            }
8376            "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
8377                Some(Self::AtomAdServicesEnrollmentDataStored)
8378            }
8379            "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
8380                Some(Self::AtomAdServicesEnrollmentFileDownloaded)
8381            }
8382            "ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
8383                Some(Self::AtomAdServicesEnrollmentMatched)
8384            }
8385            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
8386                Some(Self::AtomAdServicesConsentMigrated)
8387            }
8388            "ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
8389                Some(Self::AtomAdServicesEnrollmentFailed)
8390            }
8391            "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
8392                Some(Self::AtomAdServicesMeasurementClickVerification)
8393            }
8394            "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
8395                Some(Self::AtomAdServicesEncryptionKeyFetched)
8396            }
8397            "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
8398                Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
8399            }
8400            "ATOM_DESTINATION_REGISTERED_BEACONS" => {
8401                Some(Self::AtomDestinationRegisteredBeacons)
8402            }
8403            "ATOM_REPORT_INTERACTION_API_CALLED" => {
8404                Some(Self::AtomReportInteractionApiCalled)
8405            }
8406            "ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
8407                Some(Self::AtomInteractionReportingTableCleared)
8408            }
8409            "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
8410                Some(Self::AtomAppManifestConfigHelperCalled)
8411            }
8412            "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
8413                Some(Self::AtomAdFilteringProcessJoinCaReported)
8414            }
8415            "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
8416                Some(Self::AtomAdFilteringProcessAdSelectionReported)
8417            }
8418            "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
8419                Some(Self::AtomAdCounterHistogramUpdaterReported)
8420            }
8421            "ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
8422            "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
8423                Some(Self::AtomKAnonImmediateSignJoinStatusReported)
8424            }
8425            "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
8426                Some(Self::AtomKAnonBackgroundJobStatusReported)
8427            }
8428            "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
8429                Some(Self::AtomKAnonInitializeStatusReported)
8430            }
8431            "ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
8432            "ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
8433            "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
8434                Some(Self::AtomKAnonKeyAttestationStatusReported)
8435            }
8436            "ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
8437                Some(Self::AtomGetAdSelectionDataApiCalled)
8438            }
8439            "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
8440                Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
8441            }
8442            "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
8443                Some(Self::AtomBackgroundJobSchedulingReported)
8444            }
8445            "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
8446                Some(Self::AtomTopicsEncryptionEpochComputationReported)
8447            }
8448            "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
8449                Some(Self::AtomTopicsEncryptionGetTopicsReported)
8450            }
8451            "ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
8452                Some(Self::AtomAdservicesShellCommandCalled)
8453            }
8454            "ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
8455            "ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
8456            "ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
8457            "ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
8458            "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
8459                Some(Self::AtomPersistAdSelectionResultCalled)
8460            }
8461            "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
8462                Some(Self::AtomServerAuctionKeyFetchCalled)
8463            }
8464            "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
8465                Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
8466            }
8467            "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
8468                Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
8469            }
8470            "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
8471                Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
8472            }
8473            "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
8474                Some(Self::AtomSelectAdsFromOutcomesApiCalled)
8475            }
8476            "ATOM_REPORT_IMPRESSION_API_CALLED" => {
8477                Some(Self::AtomReportImpressionApiCalled)
8478            }
8479            "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
8480                Some(Self::AtomAdServicesEnrollmentTransactionStats)
8481            }
8482            "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED" => {
8483                Some(Self::AtomAdServicesCobaltLoggerEventReported)
8484            }
8485            "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED" => {
8486                Some(Self::AtomAdServicesCobaltPeriodicJobEventReported)
8487            }
8488            "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED" => {
8489                Some(Self::AtomUpdateSignalsProcessReported)
8490            }
8491            "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED" => {
8492                Some(Self::AtomTopicsScheduleEpochJobSettingReported)
8493            }
8494            "ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
8495                Some(Self::AtomAiWallpapersButtonPressed)
8496            }
8497            "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
8498                Some(Self::AtomAiWallpapersTemplateSelected)
8499            }
8500            "ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
8501                Some(Self::AtomAiWallpapersTermSelected)
8502            }
8503            "ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
8504                Some(Self::AtomAiWallpapersWallpaperSet)
8505            }
8506            "ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
8507                Some(Self::AtomAiWallpapersSessionSummary)
8508            }
8509            "ATOM_APEX_INSTALLATION_REQUESTED" => {
8510                Some(Self::AtomApexInstallationRequested)
8511            }
8512            "ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
8513            "ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
8514            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
8515                Some(Self::AtomAppSearchSetSchemaStatsReported)
8516            }
8517            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
8518                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
8519            }
8520            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
8521                Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
8522            }
8523            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
8524                Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
8525            }
8526            "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED" => {
8527                Some(Self::AtomAppSearchAppsIndexerStatsReported)
8528            }
8529            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
8530            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
8531            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
8532            "ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
8533            "ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
8534            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
8535                Some(Self::AtomBackgroundDexoptJobEnded)
8536            }
8537            "ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
8538            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
8539            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
8540            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
8541            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
8542                Some(Self::AtomAutofillFillRequestReported)
8543            }
8544            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
8545                Some(Self::AtomAutofillFillResponseReported)
8546            }
8547            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
8548                Some(Self::AtomAutofillSaveEventReported)
8549            }
8550            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
8551            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
8552                Some(Self::AtomAutofillFieldClassificationEventReported)
8553            }
8554            "ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
8555            "ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
8556                Some(Self::AtomCarCalmModeEventReported)
8557            }
8558            "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
8559                Some(Self::AtomCarWakeupFromSuspendReported)
8560            }
8561            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
8562            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
8563                Some(Self::AtomBluetoothHashedDeviceNameReported)
8564            }
8565            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
8566                Some(Self::AtomBluetoothL2capCocClientConnection)
8567            }
8568            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
8569                Some(Self::AtomBluetoothL2capCocServerConnection)
8570            }
8571            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
8572                Some(Self::AtomBluetoothLeSessionConnected)
8573            }
8574            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
8575                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
8576            }
8577            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
8578                Some(Self::AtomBluetoothProfileConnectionAttempted)
8579            }
8580            "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
8581                Some(Self::AtomBluetoothContentProfileErrorReported)
8582            }
8583            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
8584                Some(Self::AtomBluetoothRfcommConnectionAttempted)
8585            }
8586            "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
8587                Some(Self::AtomRemoteDeviceInformationWithMetricId)
8588            }
8589            "ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
8590            "ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
8591            "ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
8592            "ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
8593            "ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
8594            "ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
8595            "ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
8596            "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
8597                Some(Self::AtomBluetoothCrossLayerEventReported)
8598            }
8599            "ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
8600                Some(Self::AtomBroadcastAudioSessionReported)
8601            }
8602            "ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
8603                Some(Self::AtomBroadcastAudioSyncReported)
8604            }
8605            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
8606                Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
8607            }
8608            "ATOM_BLUETOOTH_LE_CONNECTION" => Some(Self::AtomBluetoothLeConnection),
8609            "ATOM_BROADCAST_SENT" => Some(Self::AtomBroadcastSent),
8610            "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
8611                Some(Self::AtomCameraFeatureCombinationQueryEvent)
8612            }
8613            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED" => {
8614                Some(Self::AtomCertificateTransparencyLogListStateChanged)
8615            }
8616            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED" => {
8617                Some(Self::AtomCertificateTransparencyLogListUpdateFailed)
8618            }
8619            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
8620                Some(Self::AtomDailyKeepaliveInfoReported)
8621            }
8622            "ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
8623                Some(Self::AtomNetworkRequestStateChanged)
8624            }
8625            "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
8626                Some(Self::AtomTetheringActiveSessionsReported)
8627            }
8628            "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
8629                Some(Self::AtomNetworkStatsRecorderFileOperated)
8630            }
8631            "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
8632                Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
8633            }
8634            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
8635            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
8636            "ATOM_VPN_CONNECTION_STATE_CHANGED" => {
8637                Some(Self::AtomVpnConnectionStateChanged)
8638            }
8639            "ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
8640            "ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
8641            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
8642                Some(Self::AtomCredentialManagerApiCalled)
8643            }
8644            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
8645                Some(Self::AtomCredentialManagerInitPhaseReported)
8646            }
8647            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
8648                Some(Self::AtomCredentialManagerCandidatePhaseReported)
8649            }
8650            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
8651                Some(Self::AtomCredentialManagerFinalPhaseReported)
8652            }
8653            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
8654                Some(Self::AtomCredentialManagerTotalReported)
8655            }
8656            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
8657                Some(Self::AtomCredentialManagerFinalnouidReported)
8658            }
8659            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
8660                Some(Self::AtomCredentialManagerGetReported)
8661            }
8662            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
8663                Some(Self::AtomCredentialManagerAuthClickReported)
8664            }
8665            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
8666                Some(Self::AtomCredentialManagerApiv2Called)
8667            }
8668            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
8669            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
8670            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
8671                Some(Self::AtomCronetEngineBuilderInitialized)
8672            }
8673            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
8674                Some(Self::AtomCronetHttpFlagsInitialized)
8675            }
8676            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
8677            "ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
8678            "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
8679                Some(Self::AtomDesktopModeSessionTaskUpdate)
8680            }
8681            "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED" => {
8682                Some(Self::AtomDesktopModeTaskSizeUpdated)
8683            }
8684            "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
8685                Some(Self::AtomDeviceLockCheckInRequestReported)
8686            }
8687            "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
8688                Some(Self::AtomDeviceLockProvisioningCompleteReported)
8689            }
8690            "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
8691                Some(Self::AtomDeviceLockKioskAppRequestReported)
8692            }
8693            "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
8694                Some(Self::AtomDeviceLockCheckInRetryReported)
8695            }
8696            "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
8697                Some(Self::AtomDeviceLockProvisionFailureReported)
8698            }
8699            "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
8700                Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
8701            }
8702            "ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
8703                Some(Self::AtomDevicePolicyManagementMode)
8704            }
8705            "ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
8706            "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
8707                Some(Self::AtomDisplayModeDirectorVoteChanged)
8708            }
8709            "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
8710                Some(Self::AtomExternalDisplayStateChanged)
8711            }
8712            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
8713            "ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
8714            "ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
8715            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
8716            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
8717                Some(Self::AtomExpressHistogramSampleReported)
8718            }
8719            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
8720            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
8721                Some(Self::AtomExpressUidHistogramSampleReported)
8722            }
8723            "ATOM_FEDERATED_COMPUTE_API_CALLED" => {
8724                Some(Self::AtomFederatedComputeApiCalled)
8725            }
8726            "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
8727                Some(Self::AtomFederatedComputeTrainingEventReported)
8728            }
8729            "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
8730                Some(Self::AtomExampleIteratorNextLatencyReported)
8731            }
8732            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
8733                Some(Self::AtomFullScreenIntentLaunched)
8734            }
8735            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
8736            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
8737            "ATOM_DEVICE_ORIENTATION_CHANGED" => Some(Self::AtomDeviceOrientationChanged),
8738            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
8739            "ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
8740                Some(Self::AtomStylusPredictionMetricsReported)
8741            }
8742            "ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
8743            "ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
8744                Some(Self::AtomMediaProjectionStateChanged)
8745            }
8746            "ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
8747                Some(Self::AtomMediaProjectionTargetChanged)
8748            }
8749            "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
8750                Some(Self::AtomExcessiveBinderProxyCountReported)
8751            }
8752            "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
8753                Some(Self::AtomProxyBytesTransferByFgBg)
8754            }
8755            "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
8756                Some(Self::AtomMobileBytesTransferByProcState)
8757            }
8758            "ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
8759            "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
8760                Some(Self::AtomSensitiveContentMediaProjectionSession)
8761            }
8762            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
8763                Some(Self::AtomSensitiveNotificationAppProtectionSession)
8764            }
8765            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
8766                Some(Self::AtomSensitiveNotificationAppProtectionApplied)
8767            }
8768            "ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
8769                Some(Self::AtomSensitiveNotificationRedaction)
8770            }
8771            "ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
8772                Some(Self::AtomSensitiveContentAppProtection)
8773            }
8774            "ATOM_APP_RESTRICTION_STATE_CHANGED" => {
8775                Some(Self::AtomAppRestrictionStateChanged)
8776            }
8777            "ATOM_BATTERY_USAGE_STATS_PER_UID" => Some(Self::AtomBatteryUsageStatsPerUid),
8778            "ATOM_POSTGC_MEMORY_SNAPSHOT" => Some(Self::AtomPostgcMemorySnapshot),
8779            "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED" => {
8780                Some(Self::AtomPowerSaveTempAllowlistChanged)
8781            }
8782            "ATOM_APP_OP_ACCESS_TRACKED" => Some(Self::AtomAppOpAccessTracked),
8783            "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED" => {
8784                Some(Self::AtomContentOrFileUriEventReported)
8785            }
8786            "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
8787                Some(Self::AtomApplicationGrammaticalInflectionChanged)
8788            }
8789            "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
8790                Some(Self::AtomSystemGrammaticalInflectionChanged)
8791            }
8792            "ATOM_BATTERY_HEALTH" => Some(Self::AtomBatteryHealth),
8793            "ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
8794            "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
8795                Some(Self::AtomHdmiSoundbarModeStatusReported)
8796            }
8797            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
8798            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
8799            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
8800                Some(Self::AtomHealthConnectStorageStats)
8801            }
8802            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
8803            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
8804            "ATOM_HEALTH_CONNECT_EXPORT_INVOKED" => {
8805                Some(Self::AtomHealthConnectExportInvoked)
8806            }
8807            "ATOM_HEALTH_CONNECT_IMPORT_INVOKED" => {
8808                Some(Self::AtomHealthConnectImportInvoked)
8809            }
8810            "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED" => {
8811                Some(Self::AtomHealthConnectExportImportStatsReported)
8812            }
8813            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
8814                Some(Self::AtomHealthConnectUiImpression)
8815            }
8816            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
8817                Some(Self::AtomHealthConnectUiInteraction)
8818            }
8819            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
8820                Some(Self::AtomHealthConnectAppOpenedReported)
8821            }
8822            "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
8823                Some(Self::AtomHotwordEgressSizeAtomReported)
8824            }
8825            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
8826            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
8827                Some(Self::AtomIkeLivenessCheckSessionValidated)
8828            }
8829            "ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
8830                Some(Self::AtomNegotiatedSecurityAssociation)
8831            }
8832            "ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
8833            "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
8834                Some(Self::AtomKeyboardSystemsEventReported)
8835            }
8836            "ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
8837            "ATOM_INPUT_EVENT_LATENCY_REPORTED" => {
8838                Some(Self::AtomInputEventLatencyReported)
8839            }
8840            "ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
8841            "ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
8842            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
8843            "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
8844                Some(Self::AtomChreSignificantMotionStateChanged)
8845            }
8846            "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED" => {
8847                Some(Self::AtomPopulationDensityProviderLoadingReported)
8848            }
8849            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED" => {
8850                Some(Self::AtomDensityBasedCoarseLocationsUsageReported)
8851            }
8852            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED" => {
8853                Some(Self::AtomDensityBasedCoarseLocationsProviderQueryReported)
8854            }
8855            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
8856                Some(Self::AtomMediaCodecReclaimRequestCompleted)
8857            }
8858            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
8859            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
8860            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
8861            "ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
8862                Some(Self::AtomMediaEditingEndedReported)
8863            }
8864            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
8865            "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED" => {
8866                Some(Self::AtomMicroxrDeviceBootCompleteReported)
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_ONDEVICEPERSONALIZATION_API_CALLED" => {
8879                Some(Self::AtomOndevicepersonalizationApiCalled)
8880            }
8881            "ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
8882                Some(Self::AtomComponentStateChangedReported)
8883            }
8884            "ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
8885            "ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
8886            "ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
8887            "ATOM_PRESSURE_STALL_INFORMATION" => Some(Self::AtomPressureStallInformation),
8888            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
8889                Some(Self::AtomPermissionRationaleDialogViewed)
8890            }
8891            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
8892                Some(Self::AtomPermissionRationaleDialogActionReported)
8893            }
8894            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
8895                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
8896            }
8897            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
8898                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
8899            }
8900            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
8901                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
8902            }
8903            "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
8904                Some(Self::AtomEnhancedConfirmationDialogResultReported)
8905            }
8906            "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
8907                Some(Self::AtomEnhancedConfirmationRestrictionCleared)
8908            }
8909            "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
8910                Some(Self::AtomPhotopickerSessionInfoReported)
8911            }
8912            "ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
8913                Some(Self::AtomPhotopickerApiInfoReported)
8914            }
8915            "ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
8916                Some(Self::AtomPhotopickerUiEventLogged)
8917            }
8918            "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
8919                Some(Self::AtomPhotopickerMediaItemStatusReported)
8920            }
8921            "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
8922                Some(Self::AtomPhotopickerPreviewInfoLogged)
8923            }
8924            "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
8925                Some(Self::AtomPhotopickerMenuInteractionLogged)
8926            }
8927            "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
8928                Some(Self::AtomPhotopickerBannerInteractionLogged)
8929            }
8930            "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
8931                Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
8932            }
8933            "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
8934                Some(Self::AtomPhotopickerPageInfoLogged)
8935            }
8936            "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
8937                Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
8938            }
8939            "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
8940                Some(Self::AtomPhotopickerAlbumSyncInfoReported)
8941            }
8942            "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
8943                Some(Self::AtomPhotopickerSearchInfoReported)
8944            }
8945            "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
8946                Some(Self::AtomSearchDataExtractionDetailsReported)
8947            }
8948            "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
8949                Some(Self::AtomEmbeddedPhotopickerInfoReported)
8950            }
8951            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
8952            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
8953            "ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
8954            "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
8955                Some(Self::AtomScreenTimeoutOverrideReported)
8956            }
8957            "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
8958                Some(Self::AtomScreenInteractiveSessionReported)
8959            }
8960            "ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
8961            "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
8962                Some(Self::AtomMediaProviderDatabaseRollbackReported)
8963            }
8964            "ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
8965                Some(Self::AtomBackupSetupStatusReported)
8966            }
8967            "ATOM_RANGING_SESSION_CONFIGURED" => Some(Self::AtomRangingSessionConfigured),
8968            "ATOM_RANGING_SESSION_STARTED" => Some(Self::AtomRangingSessionStarted),
8969            "ATOM_RANGING_SESSION_CLOSED" => Some(Self::AtomRangingSessionClosed),
8970            "ATOM_RANGING_TECHNOLOGY_STARTED" => Some(Self::AtomRangingTechnologyStarted),
8971            "ATOM_RANGING_TECHNOLOGY_STOPPED" => Some(Self::AtomRangingTechnologyStopped),
8972            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
8973            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
8974            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
8975            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
8976                Some(Self::AtomSandboxActivityEventOccurred)
8977            }
8978            "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
8979                Some(Self::AtomSdkSandboxRestrictedAccessInSession)
8980            }
8981            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
8982            "ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
8983            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
8984            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
8985                Some(Self::AtomTestExtensionAtomReported)
8986            }
8987            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
8988                Some(Self::AtomTestRestrictedAtomReported)
8989            }
8990            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
8991            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
8992                Some(Self::AtomLockscreenShortcutSelected)
8993            }
8994            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
8995                Some(Self::AtomLockscreenShortcutTriggered)
8996            }
8997            "ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
8998                Some(Self::AtomLauncherImpressionEventV2)
8999            }
9000            "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
9001                Some(Self::AtomDisplaySwitchLatencyTracked)
9002            }
9003            "ATOM_NOTIFICATION_LISTENER_SERVICE" => {
9004                Some(Self::AtomNotificationListenerService)
9005            }
9006            "ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
9007            "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED" => {
9008                Some(Self::AtomCommunalHubWidgetEventReported)
9009            }
9010            "ATOM_COMMUNAL_HUB_SNAPSHOT" => Some(Self::AtomCommunalHubSnapshot),
9011            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
9012            "ATOM_CALL_STATS" => Some(Self::AtomCallStats),
9013            "ATOM_CALL_AUDIO_ROUTE_STATS" => Some(Self::AtomCallAudioRouteStats),
9014            "ATOM_TELECOM_API_STATS" => Some(Self::AtomTelecomApiStats),
9015            "ATOM_TELECOM_ERROR_STATS" => Some(Self::AtomTelecomErrorStats),
9016            "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
9017                Some(Self::AtomCellularRadioPowerStateChanged)
9018            }
9019            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
9020            "ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
9021            "ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
9022            "ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
9023            "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED" => {
9024                Some(Self::AtomIwlanUnderlyingNetworkValidationResultReported)
9025            }
9026            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
9027            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
9028            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
9029                Some(Self::AtomQnsFallbackRestrictionChanged)
9030            }
9031            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
9032                Some(Self::AtomQnsRatPreferenceMismatchInfo)
9033            }
9034            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
9035            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
9036            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
9037            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
9038            "ATOM_SATELLITE_INCOMING_DATAGRAM" => {
9039                Some(Self::AtomSatelliteIncomingDatagram)
9040            }
9041            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
9042                Some(Self::AtomSatelliteOutgoingDatagram)
9043            }
9044            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
9045            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
9046                Some(Self::AtomSatelliteSosMessageRecommender)
9047            }
9048            "ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
9049                Some(Self::AtomCarrierRoamingSatelliteSession)
9050            }
9051            "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
9052                Some(Self::AtomCarrierRoamingSatelliteControllerStats)
9053            }
9054            "ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
9055                Some(Self::AtomControllerStatsPerPackage)
9056            }
9057            "ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
9058            "ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
9059            "ATOM_SATELLITE_ACCESS_CONTROLLER" => {
9060                Some(Self::AtomSatelliteAccessController)
9061            }
9062            "ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
9063                Some(Self::AtomCellularIdentifierDisclosed)
9064            }
9065            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
9066                Some(Self::AtomThreadnetworkTelemetryDataReported)
9067            }
9068            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
9069                Some(Self::AtomThreadnetworkTopoEntryRepeated)
9070            }
9071            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
9072                Some(Self::AtomThreadnetworkDeviceInfoReported)
9073            }
9074            "ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
9075                Some(Self::AtomBootIntegrityInfoReported)
9076            }
9077            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
9078            "ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
9079            "ATOM_TEST_UPROBESTATS_ATOM_REPORTED" => {
9080                Some(Self::AtomTestUprobestatsAtomReported)
9081            }
9082            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
9083            "ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
9084            "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
9085                Some(Self::AtomSysproxyBluetoothBytesTransfer)
9086            }
9087            "ATOM_SYSPROXY_CONNECTION_UPDATED" => {
9088                Some(Self::AtomSysproxyConnectionUpdated)
9089            }
9090            "ATOM_WEAR_COMPANION_CONNECTION_STATE" => {
9091                Some(Self::AtomWearCompanionConnectionState)
9092            }
9093            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
9094            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
9095            "ATOM_MEDIA_SESSION_STATE_CHANGED" => {
9096                Some(Self::AtomMediaSessionStateChanged)
9097            }
9098            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
9099                Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
9100            }
9101            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
9102                Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
9103            }
9104            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
9105                Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
9106            }
9107            "ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
9108            "ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
9109            "ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
9110            "ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
9111            "ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
9112                Some(Self::AtomLayoutExpressionInspected)
9113            }
9114            "ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
9115                Some(Self::AtomLayoutAnimationsInspected)
9116            }
9117            "ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
9118                Some(Self::AtomMaterialComponentsInspected)
9119            }
9120            "ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
9121            "ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
9122            "ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
9123            "ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
9124            "ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
9125            "ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
9126                Some(Self::AtomIgnoredInflationFailuresReported)
9127            }
9128            "ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
9129            "ATOM_WEAR_TIME_SYNC_REQUESTED" => Some(Self::AtomWearTimeSyncRequested),
9130            "ATOM_WEAR_TIME_UPDATE_STARTED" => Some(Self::AtomWearTimeUpdateStarted),
9131            "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED" => {
9132                Some(Self::AtomWearTimeSyncAttemptCompleted)
9133            }
9134            "ATOM_WEAR_TIME_CHANGED" => Some(Self::AtomWearTimeChanged),
9135            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
9136                Some(Self::AtomWearAdaptiveSuspendStatsReported)
9137            }
9138            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
9139                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
9140            }
9141            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
9142                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
9143            }
9144            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
9145            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
9146                Some(Self::AtomWsIncomingCallActionReported)
9147            }
9148            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
9149                Some(Self::AtomWsCallDisconnectionReported)
9150            }
9151            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
9152            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
9153                Some(Self::AtomWsCallUserExperienceLatencyReported)
9154            }
9155            "ATOM_WS_CALL_INTERACTION_REPORTED" => {
9156                Some(Self::AtomWsCallInteractionReported)
9157            }
9158            "ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
9159            "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
9160                Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
9161            }
9162            "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
9163                Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
9164            }
9165            "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
9166                Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
9167            }
9168            "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED" => {
9169                Some(Self::AtomWsRemoteEventUsageReported)
9170            }
9171            "ATOM_WS_BUGREPORT_REQUESTED" => Some(Self::AtomWsBugreportRequested),
9172            "ATOM_WS_BUGREPORT_TRIGGERED" => Some(Self::AtomWsBugreportTriggered),
9173            "ATOM_WS_BUGREPORT_FINISHED" => Some(Self::AtomWsBugreportFinished),
9174            "ATOM_WS_BUGREPORT_RESULT_RECEIVED" => {
9175                Some(Self::AtomWsBugreportResultReceived)
9176            }
9177            "ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
9178                Some(Self::AtomWsStandaloneModeSnapshot)
9179            }
9180            "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
9181                Some(Self::AtomWsFavoriteWatchFaceSnapshot)
9182            }
9183            "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT" => {
9184                Some(Self::AtomWsPhotosWatchFaceFeatureSnapshot)
9185            }
9186            "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT" => {
9187                Some(Self::AtomWsWatchFaceCustomizationSnapshot)
9188            }
9189            "ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
9190            "ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
9191            "ATOM_FIRST_OVERLAY_STATE_CHANGED" => {
9192                Some(Self::AtomFirstOverlayStateChanged)
9193            }
9194            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
9195            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
9196            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
9197                Some(Self::AtomWifiSelfRecoveryTriggered)
9198            }
9199            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
9200            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
9201            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
9202            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
9203            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
9204            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
9205                Some(Self::AtomWifiAwareResourceUsingChanged)
9206            }
9207            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
9208            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
9209                Some(Self::AtomWifiLocalOnlyRequestReceived)
9210            }
9211            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
9212                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
9213            }
9214            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
9215            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
9216            "ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
9217            "ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
9218            "ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
9219            "ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
9220                Some(Self::AtomWifiApCapabilitiesReported)
9221            }
9222            "ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
9223            "ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
9224                Some(Self::AtomScorerPredictionResultReported)
9225            }
9226            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
9227            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
9228            "ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
9229            "ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
9230            "ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
9231                Some(Self::AtomWifiConfiguredNetworkInfo)
9232            }
9233            _ => None,
9234        }
9235    }
9236}
9237/// This file is named 'statsd_tracing_config.proto' rather than
9238/// 'statsd_config.proto' (which would be more consistent with the other
9239/// config protos) so it doesn't show up and confuse folks looking for
9240/// the existing statsd_config.proto for configuring statsd itself.
9241/// Same for the config proto itself.
9242#[derive(Clone, PartialEq, ::prost::Message)]
9243pub struct StatsdTracingConfig {
9244    /// This is for the common case of the atom id being known in the enum AtomId.
9245    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9246    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
9247    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
9248    /// (e.g. non-upstream atoms that don't exist in AOSP).
9249    #[prost(int32, repeated, packed = "false", tag = "2")]
9250    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
9251    #[prost(message, repeated, tag = "3")]
9252    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
9253}
9254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9255pub struct StatsdPullAtomConfig {
9256    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9257    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9258    #[prost(int32, repeated, packed = "false", tag = "2")]
9259    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9260    #[prost(int32, optional, tag = "3")]
9261    pub pull_frequency_ms: ::core::option::Option<i32>,
9262    #[prost(string, repeated, tag = "4")]
9263    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9264}
9265/// Configuration that allows to boost the priority of the 'traced' or
9266/// 'traced_probs' processes, by changing the scheduler configuration.
9267/// Only supported on Linux and Android the boosted process must have
9268/// 'CAP_SYS_NICE' capability.
9269#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9270pub struct PriorityBoostConfig {
9271    #[prost(enumeration = "priority_boost_config::BoostPolicy", optional, tag = "1")]
9272    pub policy: ::core::option::Option<i32>,
9273    #[prost(uint32, optional, tag = "2")]
9274    pub priority: ::core::option::Option<u32>,
9275}
9276/// Nested message and enum types in `PriorityBoostConfig`.
9277pub mod priority_boost_config {
9278    #[derive(
9279        Clone,
9280        Copy,
9281        Debug,
9282        PartialEq,
9283        Eq,
9284        Hash,
9285        PartialOrd,
9286        Ord,
9287        ::prost::Enumeration
9288    )]
9289    #[repr(i32)]
9290    pub enum BoostPolicy {
9291        PolicyUnspecified = 0,
9292        /// The default policy (e.g., CFS on Linux). Priority range: \[0; 20\]
9293        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
9294        /// than default 0, 20 is the highest priority.
9295        /// Note: this is the opposite semantic of the cmdline nice, and is done for
9296        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
9297        PolicySchedOther = 1,
9298        /// The Real-time policy, Priority range: \[1; 99\]
9299        PolicySchedFifo = 2,
9300    }
9301    impl BoostPolicy {
9302        /// String value of the enum field names used in the ProtoBuf definition.
9303        ///
9304        /// The values are not transformed in any way and thus are considered stable
9305        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9306        pub fn as_str_name(&self) -> &'static str {
9307            match self {
9308                Self::PolicyUnspecified => "POLICY_UNSPECIFIED",
9309                Self::PolicySchedOther => "POLICY_SCHED_OTHER",
9310                Self::PolicySchedFifo => "POLICY_SCHED_FIFO",
9311            }
9312        }
9313        /// Creates an enum from field names used in the ProtoBuf definition.
9314        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9315            match value {
9316                "POLICY_UNSPECIFIED" => Some(Self::PolicyUnspecified),
9317                "POLICY_SCHED_OTHER" => Some(Self::PolicySchedOther),
9318                "POLICY_SCHED_FIFO" => Some(Self::PolicySchedFifo),
9319                _ => None,
9320            }
9321        }
9322    }
9323}
9324/// Config for polling process-related information from /proc/pid/status and
9325/// related files on Linux.
9326///
9327/// Data source name: "linux.process_stats".
9328#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9329pub struct ProcessStatsConfig {
9330    #[prost(
9331        enumeration = "process_stats_config::Quirks",
9332        repeated,
9333        packed = "false",
9334        tag = "1"
9335    )]
9336    pub quirks: ::prost::alloc::vec::Vec<i32>,
9337    /// If enabled all processes will be scanned and dumped when the trace starts.
9338    #[prost(bool, optional, tag = "2")]
9339    pub scan_all_processes_on_start: ::core::option::Option<bool>,
9340    /// If enabled thread names are also recoded (this is redundant if sched_switch
9341    /// is enabled).
9342    #[prost(bool, optional, tag = "3")]
9343    pub record_thread_names: ::core::option::Option<bool>,
9344    /// If > 0 samples counters (see process_stats.proto) from
9345    /// /proc/pid/status and oom_score_adj every X ms.
9346    /// This is required to be > 100ms to avoid excessive CPU usage.
9347    #[prost(uint32, optional, tag = "4")]
9348    pub proc_stats_poll_ms: ::core::option::Option<u32>,
9349    /// Explicit caching period during which the polling won't re-emit identical
9350    /// counter values. This is required to be either = 0 or a multiple of
9351    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
9352    /// rounded down to the nearest multiple.
9353    #[prost(uint32, optional, tag = "6")]
9354    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
9355    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
9356    /// /proc/pid/smaps_rollup.
9357    ///
9358    /// Android: does NOT work with the system daemons by default, as it requires
9359    /// running the recording process (traced_probes or tracebox) as root. It is
9360    /// possible to avoid the root requirement, but the exact steps depend on the
9361    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
9362    /// check, and might be further covered by the procfs "hidepid" mount option.
9363    #[prost(bool, optional, tag = "10")]
9364    pub scan_smaps_rollup: ::core::option::Option<bool>,
9365    /// If true: process descriptions will include process age (starttime in
9366    /// /proc/pid/stat).
9367    /// Introduced in: perfetto v44.
9368    #[prost(bool, optional, tag = "11")]
9369    pub record_process_age: ::core::option::Option<bool>,
9370    /// If true and |proc_stats_poll_ms| is set, process stats will include time
9371    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
9372    /// Introduced in: perfetto v44.
9373    #[prost(bool, optional, tag = "12")]
9374    pub record_process_runtime: ::core::option::Option<bool>,
9375    /// If true obtain per-process dmabuf resident set size from
9376    /// /proc/pid/dmabuf_rss.
9377    /// This feature is not in upstream linux, and is available only on some
9378    /// Android kernels.
9379    #[prost(bool, optional, tag = "13")]
9380    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
9381    /// WARNING: unmaintained and deprecated. If true this will resolve file
9382    /// descriptors for each process so these can be mapped to their actual device
9383    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
9384    /// or new fds opened after initially scanning a process will not be
9385    /// recognized.
9386    #[prost(bool, optional, tag = "9")]
9387    pub resolve_process_fds: ::core::option::Option<bool>,
9388    /// If true, do *not* write a ProcessTree::Thread message for the main thread
9389    /// of a process. This was the default behaviour before perfetto v58.
9390    ///
9391    /// Added in perfetto v58.
9392    #[prost(bool, optional, tag = "14")]
9393    pub skip_main_thread_message: ::core::option::Option<bool>,
9394}
9395/// Nested message and enum types in `ProcessStatsConfig`.
9396pub mod process_stats_config {
9397    #[derive(
9398        Clone,
9399        Copy,
9400        Debug,
9401        PartialEq,
9402        Eq,
9403        Hash,
9404        PartialOrd,
9405        Ord,
9406        ::prost::Enumeration
9407    )]
9408    #[repr(i32)]
9409    pub enum Quirks {
9410        Unspecified = 0,
9411        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
9412        /// startup is now disabled by default and can be re-enabled using the
9413        /// |scan_all_processes_on_start| arg.
9414        #[deprecated]
9415        DisableInitialDump = 1,
9416        /// If set, disables the special interaction with "linux.ftrace" data source,
9417        /// where the process stats rescrapes any thread id seen in the ftrace
9418        /// stream.
9419        DisableOnDemand = 2,
9420    }
9421    impl Quirks {
9422        /// String value of the enum field names used in the ProtoBuf definition.
9423        ///
9424        /// The values are not transformed in any way and thus are considered stable
9425        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9426        pub fn as_str_name(&self) -> &'static str {
9427            match self {
9428                Self::Unspecified => "QUIRKS_UNSPECIFIED",
9429                #[allow(deprecated)]
9430                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
9431                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
9432            }
9433        }
9434        /// Creates an enum from field names used in the ProtoBuf definition.
9435        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9436            match value {
9437                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
9438                "DISABLE_INITIAL_DUMP" => {
9439                    Some(#[allow(deprecated)] Self::DisableInitialDump)
9440                }
9441                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
9442                _ => None,
9443            }
9444        }
9445    }
9446}
9447/// Configuration for go/heapprofd.
9448/// Next id: 28
9449#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9450pub struct HeapprofdConfig {
9451    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
9452    ///
9453    /// These are:
9454    /// * All heaps if heap_sampling_intervals is empty.
9455    /// * Those profiled due to all_heaps and not named in heaps if
9456    ///    heap_sampling_intervals is not empty.
9457    /// * The implicit libc.malloc heap if heaps is empty.
9458    ///
9459    /// Set to 1 for perfect accuracy.
9460    /// Otherwise, sample every sample_interval_bytes on average.
9461    ///
9462    /// See
9463    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
9464    /// for more details.
9465    ///
9466    /// BUGS
9467    /// Before Android 12, setting this to 0 would crash the target process.
9468    ///
9469    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
9470    /// this field or with heap_sampling_intervals), otherwise the producer will
9471    /// not start.
9472    #[prost(uint64, optional, tag = "1")]
9473    pub sampling_interval_bytes: ::core::option::Option<u64>,
9474    /// If less than the given numbers of bytes are left free in the shared
9475    /// memory buffer, increase sampling interval by a factor of two.
9476    /// Adaptive sampling is disabled when set to 0.
9477    #[prost(uint64, optional, tag = "24")]
9478    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
9479    /// Stop doubling the sampling_interval once the sampling interval has reached
9480    /// this value.
9481    #[prost(uint64, optional, tag = "25")]
9482    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
9483    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
9484    /// as the following section (A), and on newer versions are both (A) and (B):
9485    ///
9486    /// (A) E.g. surfaceflinger, com.android.phone
9487    /// This input is normalized in the following way: if it contains slashes,
9488    /// everything up to the last slash is discarded. If it contains "@",
9489    /// everything after the first @ is discared.
9490    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
9491    /// This transformation is also applied to the processes' command lines when
9492    /// matching.
9493    ///
9494    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
9495    /// case it is matched against running processes' command lines using glob
9496    /// semantics. If the pattern starts with '/' it is matched against the full
9497    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
9498    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
9499    /// normalized as described above.
9500    /// Wildcard patterns are supported only for profiling already-running
9501    /// processes. A config must set no_startup=true if using wildcards, or it will
9502    /// be rejected.
9503    #[prost(string, repeated, tag = "2")]
9504    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9505    /// For watermark based triggering or local debugging.
9506    #[prost(uint64, repeated, packed = "false", tag = "4")]
9507    pub pid: ::prost::alloc::vec::Vec<u64>,
9508    /// Only profile target if it was installed by one of the packages given.
9509    /// Special values are:
9510    /// * @system: installed on the system partition
9511    /// * @product: installed on the product partition
9512    /// * @null: sideloaded
9513    /// Supported on Android 12+.
9514    #[prost(string, repeated, tag = "26")]
9515    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9516    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
9517    /// "malloc".
9518    ///
9519    /// Introduced in Android 12.
9520    #[prost(string, repeated, tag = "20")]
9521    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9522    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
9523    /// combination with all_heaps;
9524    ///
9525    /// Introduced in Android 12.
9526    #[prost(string, repeated, tag = "27")]
9527    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9528    #[prost(bool, optional, tag = "23")]
9529    pub stream_allocations: ::core::option::Option<bool>,
9530    /// If given, needs to be the same length as heaps and gives the sampling
9531    /// interval for the respective entry in heaps.
9532    ///
9533    /// Otherwise, sampling_interval_bytes is used.
9534    ///
9535    /// It is recommended to set sampling_interval_bytes to a reasonable default
9536    /// value when using this, as a value of 0 for sampling_interval_bytes will
9537    /// crash the target process before Android 12.
9538    ///
9539    /// Introduced in Android 12.
9540    ///
9541    /// All values must be non-zero or the producer will not start.
9542    #[prost(uint64, repeated, packed = "false", tag = "22")]
9543    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
9544    /// Sample all heaps registered by target process. Introduced in Android 12.
9545    #[prost(bool, optional, tag = "21")]
9546    pub all_heaps: ::core::option::Option<bool>,
9547    /// Profile all processes eligible for profiling on the system.
9548    /// See
9549    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
9550    /// for which processes are eligible.
9551    ///
9552    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
9553    /// will crash when trying to launch a new process as it will have an
9554    /// unexpected open socket to heapprofd.
9555    ///
9556    /// heapprofd will likely be overloaded by the amount of data for low
9557    /// sampling intervals.
9558    #[prost(bool, optional, tag = "5")]
9559    pub all: ::core::option::Option<bool>,
9560    /// Do not profile processes whose anon RSS + swap < given value.
9561    /// Introduced in Android 11.
9562    #[prost(uint32, optional, tag = "15")]
9563    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
9564    /// Stop profile if heapprofd memory usage goes beyond the given value.
9565    /// Introduced in Android 11.
9566    #[prost(uint32, optional, tag = "16")]
9567    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
9568    /// Stop profile if heapprofd CPU time since start of this data-source
9569    /// goes beyond given value.
9570    /// Introduced in Android 11.
9571    #[prost(uint64, optional, tag = "17")]
9572    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
9573    /// Do not emit function names for mappings starting with this prefix.
9574    /// E.g. /system to not emit symbols for any system libraries.
9575    #[prost(string, repeated, tag = "7")]
9576    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9577    /// Dump at a predefined interval.
9578    #[prost(message, optional, tag = "6")]
9579    pub continuous_dump_config: ::core::option::Option<
9580        heapprofd_config::ContinuousDumpConfig,
9581    >,
9582    /// Size of the shared memory buffer between the profiled processes and
9583    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
9584    /// MiB.
9585    ///
9586    /// Needs to be:
9587    /// * at least 8192,
9588    /// * a power of two,
9589    /// * a multiple of 4096.
9590    #[prost(uint64, optional, tag = "8")]
9591    pub shmem_size_bytes: ::core::option::Option<u64>,
9592    /// When the shmem buffer is full, block the client instead of ending the
9593    /// trace. Use with caution as this will significantly slow down the target
9594    /// process.
9595    #[prost(bool, optional, tag = "9")]
9596    pub block_client: ::core::option::Option<bool>,
9597    /// If set, stop the trace session after blocking the client for this
9598    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
9599    /// Introduced in Android 11.
9600    #[prost(uint32, optional, tag = "14")]
9601    pub block_client_timeout_us: ::core::option::Option<u32>,
9602    /// Do not profile processes from startup, only match already running
9603    /// processes.
9604    ///
9605    /// Can not be set at the same time as no_running.
9606    /// Introduced in Android 11.
9607    #[prost(bool, optional, tag = "10")]
9608    pub no_startup: ::core::option::Option<bool>,
9609    /// Do not profile running processes. Only match processes on startup.
9610    ///
9611    /// Can not be set at the same time as no_startup.
9612    /// Introduced in Android 11.
9613    #[prost(bool, optional, tag = "11")]
9614    pub no_running: ::core::option::Option<bool>,
9615    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
9616    /// at the point in time when the sampled heap usage of the process was at its
9617    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
9618    /// self_allocated and self_freed to not be set.
9619    /// Introduced in Android 11.
9620    #[prost(bool, optional, tag = "13")]
9621    pub dump_at_max: ::core::option::Option<bool>,
9622    /// Escape hatch if the session is being torn down because of a forked child
9623    /// that shares memory space, but is not correctly identified as a vforked
9624    /// child.
9625    /// Introduced in Android 11.
9626    #[prost(bool, optional, tag = "18")]
9627    pub disable_fork_teardown: ::core::option::Option<bool>,
9628    /// We try to automatically detect when a target applicatation vforks but then
9629    /// does a memory allocation (or free). This auto-detection can be disabled
9630    /// with this.
9631    /// Introduced in Android 11.
9632    #[prost(bool, optional, tag = "19")]
9633    pub disable_vfork_detection: ::core::option::Option<bool>,
9634}
9635/// Nested message and enum types in `HeapprofdConfig`.
9636pub mod heapprofd_config {
9637    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9638    pub struct ContinuousDumpConfig {
9639        /// ms to wait before first dump.
9640        #[prost(uint32, optional, tag = "5")]
9641        pub dump_phase_ms: ::core::option::Option<u32>,
9642        /// ms to wait between following dumps.
9643        #[prost(uint32, optional, tag = "6")]
9644        pub dump_interval_ms: ::core::option::Option<u32>,
9645    }
9646}
9647/// Config for collecting /proc/pid/smaps.
9648#[derive(Clone, PartialEq, ::prost::Message)]
9649pub struct SmapsConfig {
9650    /// Set of fields to collect.
9651    /// If unset, defaults to: size, rss, anonymous, swap.
9652    #[prost(
9653        enumeration = "smaps_config::VmaField",
9654        repeated,
9655        packed = "false",
9656        tag = "1"
9657    )]
9658    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
9659    /// If false, mappings are aggregated by their path name.
9660    /// If true, each mapping is serialised separately.
9661    #[prost(bool, optional, tag = "2")]
9662    pub unaggregated: ::core::option::Option<bool>,
9663    /// Optional ordered list of redaction rules for the name of the mapping.
9664    /// Note that all mappings will still be emitted, these rules only affect the
9665    /// emitted name.
9666    /// If unset, all names are written as is.
9667    /// If set, the first matching rule decides on the action.
9668    /// If no rules match, the name is written as is.
9669    #[prost(message, repeated, tag = "3")]
9670    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
9671}
9672/// Nested message and enum types in `SmapsConfig`.
9673pub mod smaps_config {
9674    #[derive(
9675        Clone,
9676        Copy,
9677        Debug,
9678        PartialEq,
9679        Eq,
9680        Hash,
9681        PartialOrd,
9682        Ord,
9683        ::prost::Enumeration
9684    )]
9685    #[repr(i32)]
9686    pub enum VmaField {
9687        Unknown = 0,
9688        Size = 1,
9689        Rss = 2,
9690        Anonymous = 3,
9691        Swap = 4,
9692        SharedClean = 5,
9693        SharedDirty = 6,
9694        PrivateClean = 7,
9695        PrivateDirty = 8,
9696        Locked = 9,
9697        Pss = 10,
9698        PssDirty = 11,
9699        SwapPss = 12,
9700    }
9701    impl VmaField {
9702        /// String value of the enum field names used in the ProtoBuf definition.
9703        ///
9704        /// The values are not transformed in any way and thus are considered stable
9705        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9706        pub fn as_str_name(&self) -> &'static str {
9707            match self {
9708                Self::Unknown => "VMA_FIELD_UNKNOWN",
9709                Self::Size => "VMA_FIELD_SIZE",
9710                Self::Rss => "VMA_FIELD_RSS",
9711                Self::Anonymous => "VMA_FIELD_ANONYMOUS",
9712                Self::Swap => "VMA_FIELD_SWAP",
9713                Self::SharedClean => "VMA_FIELD_SHARED_CLEAN",
9714                Self::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
9715                Self::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
9716                Self::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
9717                Self::Locked => "VMA_FIELD_LOCKED",
9718                Self::Pss => "VMA_FIELD_PSS",
9719                Self::PssDirty => "VMA_FIELD_PSS_DIRTY",
9720                Self::SwapPss => "VMA_FIELD_SWAP_PSS",
9721            }
9722        }
9723        /// Creates an enum from field names used in the ProtoBuf definition.
9724        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9725            match value {
9726                "VMA_FIELD_UNKNOWN" => Some(Self::Unknown),
9727                "VMA_FIELD_SIZE" => Some(Self::Size),
9728                "VMA_FIELD_RSS" => Some(Self::Rss),
9729                "VMA_FIELD_ANONYMOUS" => Some(Self::Anonymous),
9730                "VMA_FIELD_SWAP" => Some(Self::Swap),
9731                "VMA_FIELD_SHARED_CLEAN" => Some(Self::SharedClean),
9732                "VMA_FIELD_SHARED_DIRTY" => Some(Self::SharedDirty),
9733                "VMA_FIELD_PRIVATE_CLEAN" => Some(Self::PrivateClean),
9734                "VMA_FIELD_PRIVATE_DIRTY" => Some(Self::PrivateDirty),
9735                "VMA_FIELD_LOCKED" => Some(Self::Locked),
9736                "VMA_FIELD_PSS" => Some(Self::Pss),
9737                "VMA_FIELD_PSS_DIRTY" => Some(Self::PssDirty),
9738                "VMA_FIELD_SWAP_PSS" => Some(Self::SwapPss),
9739                _ => None,
9740            }
9741        }
9742    }
9743}
9744#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9745pub struct RedactionRule {
9746    /// The pattern to match against.
9747    #[prost(string, optional, tag = "1")]
9748    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
9749    #[prost(enumeration = "redaction_rule::MatchMode", optional, tag = "2")]
9750    pub match_mode: ::core::option::Option<i32>,
9751    /// If the pattern matches, keep the entire name. In other words, do not
9752    /// redact. This option exists since the rules are evaluated in order, so a
9753    /// more specific allow rule with keep_full can match before a more general
9754    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
9755    /// |keep_path_elements|.
9756    #[prost(bool, optional, tag = "3")]
9757    pub keep_full: ::core::option::Option<bool>,
9758    /// If the pattern matches, replace the name with this string (defaulting to
9759    /// <pf_redacted> if unset). The final emitted name might be further augmented
9760    /// by the options below keeping parts of the original name.
9761    #[prost(string, optional, tag = "4")]
9762    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
9763    /// If the pattern matches, keep the file extension, if any.
9764    /// Can be combined with |keep_path_elements|.
9765    #[prost(bool, optional, tag = "5")]
9766    pub keep_file_extension: ::core::option::Option<bool>,
9767    /// If the pattern matches, keep the first N path elements (as separated by
9768    /// '/'). If the name is not a path, this option does nothing. Can be combined
9769    /// with |keep_file_extension|.
9770    #[prost(uint32, optional, tag = "6")]
9771    pub keep_path_elements: ::core::option::Option<u32>,
9772}
9773/// Nested message and enum types in `RedactionRule`.
9774pub mod redaction_rule {
9775    /// How to match |pattern| against the name of the mapping.
9776    /// Note for future extensions: unrecognised enums are treated as always
9777    /// matching.
9778    #[derive(
9779        Clone,
9780        Copy,
9781        Debug,
9782        PartialEq,
9783        Eq,
9784        Hash,
9785        PartialOrd,
9786        Ord,
9787        ::prost::Enumeration
9788    )]
9789    #[repr(i32)]
9790    pub enum MatchMode {
9791        Unknown = 0,
9792        /// The pattern matches if it is a prefix of the mapping name.
9793        Prefix = 1,
9794        /// The pattern is matched against the mapping name as a pathname glob
9795        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
9796        /// The key distinction is that path separators in the name are *not* matched
9797        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
9798        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
9799        /// Note: any "(deleted)" suffix is excluded before matching.
9800        GlobPath = 2,
9801        /// The pattern is matched against the mapping name without special-casing
9802        /// path separators. So a pattern of the form "/usr/*/llvm" would match
9803        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
9804        /// Note: any "(deleted)" suffix is excluded before matching.
9805        GlobString = 3,
9806    }
9807    impl MatchMode {
9808        /// String value of the enum field names used in the ProtoBuf definition.
9809        ///
9810        /// The values are not transformed in any way and thus are considered stable
9811        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9812        pub fn as_str_name(&self) -> &'static str {
9813            match self {
9814                Self::Unknown => "MATCH_MODE_UNKNOWN",
9815                Self::Prefix => "MATCH_MODE_PREFIX",
9816                Self::GlobPath => "MATCH_MODE_GLOB_PATH",
9817                Self::GlobString => "MATCH_MODE_GLOB_STRING",
9818            }
9819        }
9820        /// Creates an enum from field names used in the ProtoBuf definition.
9821        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9822            match value {
9823                "MATCH_MODE_UNKNOWN" => Some(Self::Unknown),
9824                "MATCH_MODE_PREFIX" => Some(Self::Prefix),
9825                "MATCH_MODE_GLOB_PATH" => Some(Self::GlobPath),
9826                "MATCH_MODE_GLOB_STRING" => Some(Self::GlobString),
9827                _ => None,
9828            }
9829        }
9830    }
9831}
9832/// Configuration for managed app heap graph snapshots.
9833#[derive(Clone, PartialEq, ::prost::Message)]
9834pub struct JavaHprofConfig {
9835    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
9836    /// comm string). The semantics of this field were changed since its original
9837    /// introduction.
9838    ///
9839    /// On Android T+ (13+), this field can specify a single wildcard (*), and
9840    /// the profiler will attempt to match it in two possible ways:
9841    /// * if the pattern starts with a '/', then it is matched against the first
9842    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
9843    ///    "/bin/echo".
9844    /// * otherwise the pattern is matched against the part of argv0
9845    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
9846    ///    For example "echo" would match "/bin/echo".
9847    ///
9848    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
9849    /// normalized prior to an exact string comparison. Normalization is as
9850    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
9851    /// the string contains forward slashes, trim everything up to and including
9852    /// the last one.
9853    ///
9854    /// Implementation note: in either case, at most 511 characters of cmdline
9855    /// are considered.
9856    #[prost(string, repeated, tag = "1")]
9857    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9858    /// For watermark based triggering or local debugging.
9859    #[prost(uint64, repeated, packed = "false", tag = "2")]
9860    pub pid: ::prost::alloc::vec::Vec<u64>,
9861    /// Only profile target if it was installed by one of the packages given.
9862    /// Special values are:
9863    /// * @system: installed on the system partition
9864    /// * @product: installed on the product partition
9865    /// * @null: sideloaded
9866    /// Supported on Android 12+.
9867    #[prost(string, repeated, tag = "7")]
9868    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9869    /// Dump at a predefined interval.
9870    #[prost(message, optional, tag = "3")]
9871    pub continuous_dump_config: ::core::option::Option<
9872        java_hprof_config::ContinuousDumpConfig,
9873    >,
9874    /// Do not profile processes whose anon RSS + swap < given value.
9875    #[prost(uint32, optional, tag = "4")]
9876    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
9877    /// Do not profile processes whose Java heap size < given value.
9878    #[prost(uint32, optional, tag = "9")]
9879    pub min_java_heap_size_kb: ::core::option::Option<u32>,
9880    /// Include the process' /proc/self/smaps.
9881    /// This only shows maps that:
9882    /// * start with /system
9883    /// * start with /vendor
9884    /// * start with /data/app
9885    /// * contain "extracted in memory from Y", where Y matches any of the above
9886    ///
9887    /// Superseded by |smaps_config| in perfetto v58+.
9888    #[prost(bool, optional, tag = "5")]
9889    pub dump_smaps: ::core::option::Option<bool>,
9890    /// If set, include /proc/self/smaps memory mappings.
9891    ///
9892    /// Added in perfetto v58.
9893    #[prost(message, optional, tag = "8")]
9894    pub smaps_config: ::core::option::Option<SmapsConfig>,
9895    /// Exclude objects of the following types from the profile. This can be
9896    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
9897    #[prost(string, repeated, tag = "6")]
9898    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9899    /// Dump the callsite of the thread triggering the OutOfMemoryError.
9900    /// Only applicable to OutOfMemoryError heap dumps
9901    #[prost(bool, optional, tag = "10")]
9902    pub dump_oome_callstack: ::core::option::Option<bool>,
9903}
9904/// Nested message and enum types in `JavaHprofConfig`.
9905pub mod java_hprof_config {
9906    /// If dump_interval_ms != 0, the following configuration is used.
9907    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9908    pub struct ContinuousDumpConfig {
9909        /// ms to wait before first continuous dump.
9910        /// A dump is always created at the beginning of the trace.
9911        #[prost(uint32, optional, tag = "1")]
9912        pub dump_phase_ms: ::core::option::Option<u32>,
9913        /// ms to wait between following dumps.
9914        #[prost(uint32, optional, tag = "2")]
9915        pub dump_interval_ms: ::core::option::Option<u32>,
9916        /// If true, scans all the processes to find `process_cmdline` and filter by
9917        /// `min_anonymous_memory_kb` only at data source start. Default on Android
9918        /// S-.
9919        ///
9920        /// If false, rescans all the processes to find on every dump. Default on
9921        /// Android T+.
9922        #[prost(bool, optional, tag = "3")]
9923        pub scan_pids_only_on_start: ::core::option::Option<bool>,
9924    }
9925}
9926#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9927pub struct PerfEvents {}
9928/// Nested message and enum types in `PerfEvents`.
9929pub mod perf_events {
9930    /// The primary event to count. If recording multiple events, this
9931    /// counter is the "group leader".
9932    /// Commented from the perspective of its use in |PerfEventConfig|.
9933    /// Next id: 13
9934    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9935    pub struct Timebase {
9936        /// Optional modifiers for the event. Modelled after the perftool's
9937        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
9938        /// Currently supported: count scoping such as :u, :k, :uk, ...
9939        /// Modifiers can differ between the timebase and followers.
9940        #[prost(enumeration = "EventModifier", repeated, packed = "false", tag = "12")]
9941        pub modifiers: ::prost::alloc::vec::Vec<i32>,
9942        /// If set, samples will be timestamped with the given clock.
9943        /// If unset, the clock is chosen by the implementation.
9944        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
9945        /// used for hardware events (due to interrupt safety), for which the
9946        /// recommendation is to use one of the monotonic clocks.
9947        #[prost(enumeration = "PerfClock", optional, tag = "11")]
9948        pub timestamp_clock: ::core::option::Option<i32>,
9949        /// Optional arbitrary name for the event, to identify it in the parsed
9950        /// trace. Does *not* affect the profiling itself. If unset, the trace
9951        /// parser will choose a suitable name.
9952        #[prost(string, optional, tag = "10")]
9953        pub name: ::core::option::Option<::prost::alloc::string::String>,
9954        /// How often to snapshot the counter, along with any follower events and
9955        /// any additional sampled data such as callstacks.
9956        ///
9957        /// This choice also controls how the readings are taken:
9958        /// * With |frequency| or |period|, samples are taken by the kernel
9959        ///    into a ring buffer. Analogous to `perf record`.
9960        /// * With |poll_period_ms|, the userspace periodically snapshots
9961        ///    the counters using the read syscall. Analogous to `perf stat -I`.
9962        /// Prefer the sampling options unless you're recording PMUs whose
9963        /// perf drivers only support the reading mode.
9964        ///
9965        /// If unset, an implementation-defined sampling default is used.
9966        #[prost(oneof = "timebase::Interval", tags = "2, 1, 6")]
9967        pub interval: ::core::option::Option<timebase::Interval>,
9968        /// Counting event to use as the timebase.
9969        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
9970        /// which is what you usually want.
9971        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
9972        pub event: ::core::option::Option<timebase::Event>,
9973    }
9974    /// Nested message and enum types in `Timebase`.
9975    pub mod timebase {
9976        /// How often to snapshot the counter, along with any follower events and
9977        /// any additional sampled data such as callstacks.
9978        ///
9979        /// This choice also controls how the readings are taken:
9980        /// * With |frequency| or |period|, samples are taken by the kernel
9981        ///    into a ring buffer. Analogous to `perf record`.
9982        /// * With |poll_period_ms|, the userspace periodically snapshots
9983        ///    the counters using the read syscall. Analogous to `perf stat -I`.
9984        /// Prefer the sampling options unless you're recording PMUs whose
9985        /// perf drivers only support the reading mode.
9986        ///
9987        /// If unset, an implementation-defined sampling default is used.
9988        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9989        pub enum Interval {
9990            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
9991            /// same as 1/period.
9992            /// Details: the actual sampling will still be based on a period, but the
9993            /// kernel will dynamically adjust it based on the observed event rate, to
9994            /// approximate this frequency. Works best with steady-rate events like
9995            /// timers.
9996            /// Not guaranteed to be honored as the kernel can throttle the sampling
9997            /// rate if it's too high.
9998            #[prost(uint64, tag = "2")]
9999            Frequency(u64),
10000            /// Per-cpu sampling will occur every |period| counts of |event|.
10001            /// Prefer |frequency| by default, as it's easier to oversample with a
10002            /// fixed period.
10003            /// Not guaranteed to be honored as the kernel can throttle the sampling
10004            /// rate if it's too high.
10005            #[prost(uint64, tag = "1")]
10006            Period(u64),
10007            /// Per-cpu values are read by the userspace every interval. If using this
10008            /// mode, only follower events are supported. Options such as
10009            /// |PerfEventConfig.CallstackSampling| are incompatible.
10010            /// The period can't be guaranteed to be exact since the readings are taken
10011            /// by userspace.
10012            #[prost(uint32, tag = "6")]
10013            PollPeriodMs(u32),
10014        }
10015        /// Counting event to use as the timebase.
10016        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
10017        /// which is what you usually want.
10018        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10019        pub enum Event {
10020            #[prost(enumeration = "super::Counter", tag = "4")]
10021            Counter(i32),
10022            #[prost(message, tag = "3")]
10023            Tracepoint(super::Tracepoint),
10024            #[prost(message, tag = "5")]
10025            RawEvent(super::RawEvent),
10026        }
10027    }
10028    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10029    pub struct Tracepoint {
10030        /// Group and name for the tracepoint, acceptable forms:
10031        /// * "sched/sched_switch"
10032        /// * "sched:sched_switch"
10033        #[prost(string, optional, tag = "1")]
10034        pub name: ::core::option::Option<::prost::alloc::string::String>,
10035        /// Optional field-level filter for the tracepoint. Only events matching this
10036        /// filter will be counted (and therefore contribute to the sampling period).
10037        /// Example: "prev_pid >= 42 && next_pid == 0".
10038        /// For full syntax, see kernel documentation on "Event filtering":
10039        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
10040        #[prost(string, optional, tag = "2")]
10041        pub filter: ::core::option::Option<::prost::alloc::string::String>,
10042    }
10043    /// Syscall-level description of the event, propagated to the perf_event_attr
10044    /// struct. Primarily for local use-cases, since the event availability and
10045    /// encoding is hardware-specific.
10046    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10047    pub struct RawEvent {
10048        /// Either |type| or |pmu_name| can be set.
10049        #[prost(uint32, optional, tag = "1")]
10050        pub r#type: ::core::option::Option<u32>,
10051        #[prost(uint64, optional, tag = "2")]
10052        pub config: ::core::option::Option<u64>,
10053        #[prost(uint64, optional, tag = "3")]
10054        pub config1: ::core::option::Option<u64>,
10055        #[prost(uint64, optional, tag = "4")]
10056        pub config2: ::core::option::Option<u64>,
10057        /// The name of a dynamic PMU under /sys/bus/event_source/devices
10058        /// (e.g. "armv8_pmuv3").
10059        /// If set, leave |type| unset.
10060        /// Android: the relevant sysfs paths are not allowlisted by default, so
10061        /// this option will require a rooted device with selinux disabled.
10062        #[prost(string, optional, tag = "5")]
10063        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
10064    }
10065    /// Builtin counter names from the uapi header. Commented with their perf tool
10066    /// aliases.
10067    /// TODO(rsavitski): consider generating enums for cache events (should be
10068    /// finite), and generally make this list as extensive as possible. Excluding
10069    /// things like dynamic PMUs since those don't fit into a static enum.
10070    /// Next id: 21
10071    #[derive(
10072        Clone,
10073        Copy,
10074        Debug,
10075        PartialEq,
10076        Eq,
10077        Hash,
10078        PartialOrd,
10079        Ord,
10080        ::prost::Enumeration
10081    )]
10082    #[repr(i32)]
10083    pub enum Counter {
10084        UnknownCounter = 0,
10085        /// cpu-clock
10086        SwCpuClock = 1,
10087        /// page-faults, faults
10088        SwPageFaults = 2,
10089        /// task-clock
10090        SwTaskClock = 3,
10091        /// context-switches, cs
10092        SwContextSwitches = 4,
10093        /// cpu-migrations, migrations
10094        SwCpuMigrations = 5,
10095        /// minor-faults
10096        SwPageFaultsMin = 6,
10097        /// major-faults
10098        SwPageFaultsMaj = 7,
10099        /// alignment-faults
10100        SwAlignmentFaults = 8,
10101        /// emulation-faults
10102        SwEmulationFaults = 9,
10103        /// dummy
10104        SwDummy = 20,
10105        /// cpu-cycles, cycles
10106        HwCpuCycles = 10,
10107        /// instructions
10108        HwInstructions = 11,
10109        /// cache-references
10110        HwCacheReferences = 12,
10111        /// cache-misses
10112        HwCacheMisses = 13,
10113        /// branch-instructions, branches
10114        HwBranchInstructions = 14,
10115        /// branch-misses
10116        HwBranchMisses = 15,
10117        /// bus-cycles
10118        HwBusCycles = 16,
10119        /// stalled-cycles-frontend, idle-cycles-frontend
10120        HwStalledCyclesFrontend = 17,
10121        /// stalled-cycles-backend, idle-cycles-backend
10122        HwStalledCyclesBackend = 18,
10123        /// ref-cycles
10124        HwRefCpuCycles = 19,
10125    }
10126    impl Counter {
10127        /// String value of the enum field names used in the ProtoBuf definition.
10128        ///
10129        /// The values are not transformed in any way and thus are considered stable
10130        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10131        pub fn as_str_name(&self) -> &'static str {
10132            match self {
10133                Self::UnknownCounter => "UNKNOWN_COUNTER",
10134                Self::SwCpuClock => "SW_CPU_CLOCK",
10135                Self::SwPageFaults => "SW_PAGE_FAULTS",
10136                Self::SwTaskClock => "SW_TASK_CLOCK",
10137                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
10138                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
10139                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
10140                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
10141                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
10142                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
10143                Self::SwDummy => "SW_DUMMY",
10144                Self::HwCpuCycles => "HW_CPU_CYCLES",
10145                Self::HwInstructions => "HW_INSTRUCTIONS",
10146                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
10147                Self::HwCacheMisses => "HW_CACHE_MISSES",
10148                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
10149                Self::HwBranchMisses => "HW_BRANCH_MISSES",
10150                Self::HwBusCycles => "HW_BUS_CYCLES",
10151                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
10152                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
10153                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
10154            }
10155        }
10156        /// Creates an enum from field names used in the ProtoBuf definition.
10157        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10158            match value {
10159                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
10160                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
10161                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
10162                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
10163                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
10164                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
10165                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
10166                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
10167                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
10168                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
10169                "SW_DUMMY" => Some(Self::SwDummy),
10170                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
10171                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
10172                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
10173                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
10174                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
10175                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
10176                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
10177                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
10178                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
10179                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
10180                _ => None,
10181            }
10182        }
10183    }
10184    /// Subset of clocks that is supported by perf timestamping.
10185    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
10186    /// would require additions to the trace clock synchronisation logic.
10187    #[derive(
10188        Clone,
10189        Copy,
10190        Debug,
10191        PartialEq,
10192        Eq,
10193        Hash,
10194        PartialOrd,
10195        Ord,
10196        ::prost::Enumeration
10197    )]
10198    #[repr(i32)]
10199    pub enum PerfClock {
10200        UnknownPerfClock = 0,
10201        Realtime = 1,
10202        Monotonic = 2,
10203        MonotonicRaw = 3,
10204        Boottime = 4,
10205    }
10206    impl PerfClock {
10207        /// String value of the enum field names used in the ProtoBuf definition.
10208        ///
10209        /// The values are not transformed in any way and thus are considered stable
10210        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10211        pub fn as_str_name(&self) -> &'static str {
10212            match self {
10213                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
10214                Self::Realtime => "PERF_CLOCK_REALTIME",
10215                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
10216                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
10217                Self::Boottime => "PERF_CLOCK_BOOTTIME",
10218            }
10219        }
10220        /// Creates an enum from field names used in the ProtoBuf definition.
10221        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10222            match value {
10223                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
10224                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
10225                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
10226                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
10227                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
10228                _ => None,
10229            }
10230        }
10231    }
10232    #[derive(
10233        Clone,
10234        Copy,
10235        Debug,
10236        PartialEq,
10237        Eq,
10238        Hash,
10239        PartialOrd,
10240        Ord,
10241        ::prost::Enumeration
10242    )]
10243    #[repr(i32)]
10244    pub enum EventModifier {
10245        UnknownEventModifier = 0,
10246        /// count only while in userspace
10247        CountUserspace = 1,
10248        /// count only while in kernel
10249        CountKernel = 2,
10250        /// count only while in hypervisor
10251        CountHypervisor = 3,
10252    }
10253    impl EventModifier {
10254        /// String value of the enum field names used in the ProtoBuf definition.
10255        ///
10256        /// The values are not transformed in any way and thus are considered stable
10257        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10258        pub fn as_str_name(&self) -> &'static str {
10259            match self {
10260                Self::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
10261                Self::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
10262                Self::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
10263                Self::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
10264            }
10265        }
10266        /// Creates an enum from field names used in the ProtoBuf definition.
10267        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10268            match value {
10269                "UNKNOWN_EVENT_MODIFIER" => Some(Self::UnknownEventModifier),
10270                "EVENT_MODIFIER_COUNT_USERSPACE" => Some(Self::CountUserspace),
10271                "EVENT_MODIFIER_COUNT_KERNEL" => Some(Self::CountKernel),
10272                "EVENT_MODIFIER_COUNT_HYPERVISOR" => Some(Self::CountHypervisor),
10273                _ => None,
10274            }
10275        }
10276    }
10277}
10278/// Additional events associated with a leader.
10279/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
10280#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10281pub struct FollowerEvent {
10282    /// Modifiers can differ between the timebase and followers.
10283    #[prost(
10284        enumeration = "perf_events::EventModifier",
10285        repeated,
10286        packed = "false",
10287        tag = "5"
10288    )]
10289    pub modifiers: ::prost::alloc::vec::Vec<i32>,
10290    /// Optional arbitrary name for the event, to identify it in the parsed
10291    /// trace. Does *not* affect the profiling itself. If unset, the trace
10292    /// parser will choose a suitable name.
10293    #[prost(string, optional, tag = "4")]
10294    pub name: ::core::option::Option<::prost::alloc::string::String>,
10295    #[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
10296    pub event: ::core::option::Option<follower_event::Event>,
10297}
10298/// Nested message and enum types in `FollowerEvent`.
10299pub mod follower_event {
10300    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10301    pub enum Event {
10302        #[prost(enumeration = "super::perf_events::Counter", tag = "1")]
10303        Counter(i32),
10304        #[prost(message, tag = "2")]
10305        Tracepoint(super::perf_events::Tracepoint),
10306        #[prost(message, tag = "3")]
10307        RawEvent(super::perf_events::RawEvent),
10308    }
10309}
10310/// Configuration for the traced_perf profiler.
10311///
10312/// Example config for basic cpu profiling:
10313///    perf_event_config {
10314///      timebase {
10315///        frequency: 80
10316///      }
10317///      callstack_sampling {
10318///        scope {
10319///          target_cmdline: "surfaceflinger"
10320///          target_cmdline: "system_server"
10321///        }
10322///        kernel_frames: true
10323///      }
10324///    }
10325///
10326/// Next id: 23
10327#[derive(Clone, PartialEq, ::prost::Message)]
10328pub struct PerfEventConfig {
10329    /// What event to sample on, and how often.
10330    /// Defined in common/perf_events.proto.
10331    #[prost(message, optional, tag = "15")]
10332    pub timebase: ::core::option::Option<perf_events::Timebase>,
10333    /// Other events associated with the leader described in the timebase.
10334    #[prost(message, repeated, tag = "19")]
10335    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
10336    /// If set, the profiler will sample userspace processes' callstacks at the
10337    /// interval specified by the |timebase|.
10338    /// If unset, the profiler will record only the event counts.
10339    #[prost(message, optional, tag = "16")]
10340    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
10341    /// List of cpu indices for counting. If empty, the default is all cpus.
10342    ///
10343    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
10344    /// counter-only traces. A future change will likely reorganise the options,
10345    /// but this field will continue to be supported.
10346    ///
10347    /// Available since: perfetto v50.
10348    #[prost(uint32, repeated, packed = "false", tag = "20")]
10349    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
10350    /// Allow failure of perf_event_open
10351    #[prost(bool, optional, tag = "21")]
10352    pub ignore_open_failure: ::core::option::Option<bool>,
10353    /// If not empty, consider only CPUs whose CPUID matches one of these values.
10354    #[prost(string, repeated, tag = "22")]
10355    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10356    /// How often the per-cpu ring buffers are read by the producer.
10357    /// If unset, an implementation-defined default is used.
10358    #[prost(uint32, optional, tag = "8")]
10359    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
10360    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
10361    /// kernel. If set, must be a power of two.
10362    /// If unset, an implementation-defined default is used.
10363    #[prost(uint32, optional, tag = "3")]
10364    pub ring_buffer_pages: ::core::option::Option<u32>,
10365    /// Drop samples if the heap memory held by the samples in the unwinder queue
10366    /// is above the given limit. This counts the memory across all concurrent data
10367    /// sources (not just this one's), and there is no fairness guarantee - the
10368    /// whole quota might be used up by a concurrent source.
10369    #[prost(uint64, optional, tag = "17")]
10370    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
10371    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
10372    /// footprint exceeds this value.
10373    #[prost(uint32, optional, tag = "13")]
10374    pub max_daemon_memory_kb: ::core::option::Option<u32>,
10375    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
10376    /// sampled process. This is primarily for Android, where this lookup is
10377    /// asynchronous. As long as the producer is waiting, the associated samples
10378    /// will be kept enqueued (putting pressure on the capacity of the shared
10379    /// unwinding queue). Once a lookup for a process expires, all associated
10380    /// samples are discarded. However, if the lookup still succeeds after the
10381    /// timeout, future samples will be handled normally.
10382    /// If unset, an implementation-defined default is used.
10383    #[prost(uint32, optional, tag = "9")]
10384    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
10385    /// Optional period for clearing state cached by the userspace unwinder. This
10386    /// is a heavy operation that is only necessary for traces that target a wide
10387    /// set of processes, and require the memory footprint to be reset
10388    /// periodically. To effectively disable the cache clearing, set to a value
10389    /// greater than your trace duration.
10390    ///
10391    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
10392    ///
10393    /// If zero or unset:
10394    /// * before perfetto v52: no cache clearing.
10395    /// * perfetto v52+: implementation chooses an infrequent default.
10396    #[prost(uint32, optional, tag = "10")]
10397    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
10398    /// If set, only profile target if it was installed by a package with one of
10399    /// these names. Special values:
10400    /// * "@system": installed on the system partition
10401    /// * "@product": installed on the product partition
10402    /// * "@null": sideloaded
10403    /// Supported on Android 12+.
10404    #[prost(string, repeated, tag = "18")]
10405    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10406    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
10407    /// We rely on this to detect such configs.
10408    #[prost(bool, optional, tag = "1")]
10409    pub all_cpus: ::core::option::Option<bool>,
10410    #[prost(uint32, optional, tag = "2")]
10411    pub sampling_frequency: ::core::option::Option<u32>,
10412    #[prost(bool, optional, tag = "12")]
10413    pub kernel_frames: ::core::option::Option<bool>,
10414    #[prost(int32, repeated, packed = "false", tag = "4")]
10415    pub target_pid: ::prost::alloc::vec::Vec<i32>,
10416    #[prost(string, repeated, tag = "5")]
10417    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10418    #[prost(int32, repeated, packed = "false", tag = "6")]
10419    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10420    #[prost(string, repeated, tag = "7")]
10421    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10422    #[prost(uint32, optional, tag = "11")]
10423    pub additional_cmdline_count: ::core::option::Option<u32>,
10424}
10425/// Nested message and enum types in `PerfEventConfig`.
10426pub mod perf_event_config {
10427    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10428    pub struct CallstackSampling {
10429        /// Defines a set of processes for which samples are retained/skipped. If
10430        /// unset, all samples are kept, but beware that it will be very heavy on the
10431        /// stack unwinder, which might start dropping samples due to overload.
10432        #[prost(message, optional, tag = "1")]
10433        pub scope: ::core::option::Option<Scope>,
10434        /// If true, callstacks will include the kernel-space frames. Such frames can
10435        /// be identified by a magical "kernel" string as their mapping name.
10436        /// Requires traced_perf to be running as root, or kptr_restrict to have been
10437        /// manually unrestricted. On Android, the platform should do the right thing
10438        /// on debug builds.
10439        /// This does *not* disclose KASLR, as only the function names are emitted.
10440        #[prost(bool, optional, tag = "2")]
10441        pub kernel_frames: ::core::option::Option<bool>,
10442        /// Whether to record and unwind userspace callstacks. If unset, defaults to
10443        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
10444        /// as the most common default (this defaulting is only applicable if the
10445        /// outer CallstackSampling message is explicitly set).
10446        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
10447        pub user_frames: ::core::option::Option<i32>,
10448    }
10449    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10450    pub struct Scope {
10451        /// Process ID (TGID) allowlist. If this list is not empty, only matching
10452        /// samples will be retained. If multiple allow/deny-lists are
10453        /// specified by the config, then all of them are evaluated for each sampled
10454        /// process.
10455        #[prost(int32, repeated, packed = "false", tag = "1")]
10456        pub target_pid: ::prost::alloc::vec::Vec<i32>,
10457        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10458        /// comm string). The semantics of this field were changed since its original
10459        /// introduction.
10460        ///
10461        /// On Android T+ (13+), this field can specify a single wildcard (*), and
10462        /// the profiler will attempt to match it in two possible ways:
10463        /// * if the pattern starts with a '/', then it is matched against the first
10464        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10465        ///    "/bin/echo".
10466        /// * otherwise the pattern is matched against the part of argv0
10467        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10468        ///    For example "echo" would match "/bin/echo".
10469        ///
10470        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
10471        /// normalized prior to an exact string comparison. Normalization is as
10472        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
10473        /// the string contains forward slashes, trim everything up to and including
10474        /// the last one.
10475        ///
10476        /// Implementation note: in either case, at most 511 characters of cmdline
10477        /// are considered.
10478        #[prost(string, repeated, tag = "2")]
10479        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10480        /// List of excluded pids.
10481        #[prost(int32, repeated, packed = "false", tag = "3")]
10482        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10483        /// List of excluded cmdlines. See description of |target_cmdline| for how
10484        /// this is handled.
10485        #[prost(string, repeated, tag = "4")]
10486        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10487        /// Number of additional command lines to sample. Only those which are
10488        /// neither explicitly included nor excluded will be considered. Processes
10489        /// are accepted on a first come, first served basis.
10490        #[prost(uint32, optional, tag = "5")]
10491        pub additional_cmdline_count: ::core::option::Option<u32>,
10492        /// If set to N, all encountered processes will be put into one of the N
10493        /// possible bins, and only one randomly-chosen bin will be selected for
10494        /// unwinding. The binning is simply "pid % N", under the assumption that
10495        /// low-order bits of pids are roughly uniformly distributed. Other explicit
10496        /// inclusions/exclusions in this |Scope| message are still respected.
10497        ///
10498        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
10499        /// values will be queryable in trace processor under the "stats" table as
10500        /// "perf_process_shard_count" and "perf_chosen_process_shard".
10501        ///
10502        /// NB: all data sources in a config that set |process_shard_count| must set
10503        /// it to the same value. The profiler will choose one bin for all those data
10504        /// sources.
10505        #[prost(uint32, optional, tag = "6")]
10506        pub process_shard_count: ::core::option::Option<u32>,
10507    }
10508    /// Userspace unwinding mode.
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 UnwindMode {
10522        UnwindUnknown = 0,
10523        /// Do not unwind userspace:
10524        UnwindSkip = 1,
10525        /// Use libunwindstack (default):
10526        UnwindDwarf = 2,
10527        /// Use userspace frame pointer unwinder:
10528        UnwindFramePointer = 3,
10529        /// Ask the kernel to unwind the userspace stack via frame pointers, using
10530        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
10531        /// sample, which avoids the per-sample copy cost and the depth limit
10532        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
10533        /// (including system libraries) is built with frame pointers - the kernel
10534        /// walks the chain and returns instruction addresses, which still need to
10535        /// be symbolized offline using the recorded process mappings.
10536        UnwindKernelFramePointer = 4,
10537    }
10538    impl UnwindMode {
10539        /// String value of the enum field names used in the ProtoBuf definition.
10540        ///
10541        /// The values are not transformed in any way and thus are considered stable
10542        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10543        pub fn as_str_name(&self) -> &'static str {
10544            match self {
10545                Self::UnwindUnknown => "UNWIND_UNKNOWN",
10546                Self::UnwindSkip => "UNWIND_SKIP",
10547                Self::UnwindDwarf => "UNWIND_DWARF",
10548                Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
10549                Self::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
10550            }
10551        }
10552        /// Creates an enum from field names used in the ProtoBuf definition.
10553        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10554            match value {
10555                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
10556                "UNWIND_SKIP" => Some(Self::UnwindSkip),
10557                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
10558                "UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
10559                "UNWIND_KERNEL_FRAME_POINTER" => Some(Self::UnwindKernelFramePointer),
10560                _ => None,
10561            }
10562        }
10563    }
10564}
10565/// Counter definitions for Linux's /proc/meminfo.
10566#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10567#[repr(i32)]
10568pub enum MeminfoCounters {
10569    MeminfoUnspecified = 0,
10570    MeminfoMemTotal = 1,
10571    MeminfoMemFree = 2,
10572    MeminfoMemAvailable = 3,
10573    MeminfoBuffers = 4,
10574    MeminfoCached = 5,
10575    MeminfoSwapCached = 6,
10576    MeminfoActive = 7,
10577    MeminfoInactive = 8,
10578    MeminfoActiveAnon = 9,
10579    MeminfoInactiveAnon = 10,
10580    MeminfoActiveFile = 11,
10581    MeminfoInactiveFile = 12,
10582    MeminfoUnevictable = 13,
10583    MeminfoMlocked = 14,
10584    MeminfoSwapTotal = 15,
10585    MeminfoSwapFree = 16,
10586    MeminfoDirty = 17,
10587    MeminfoWriteback = 18,
10588    MeminfoAnonPages = 19,
10589    MeminfoMapped = 20,
10590    MeminfoShmem = 21,
10591    MeminfoSlab = 22,
10592    MeminfoSlabReclaimable = 23,
10593    MeminfoSlabUnreclaimable = 24,
10594    MeminfoKernelStack = 25,
10595    MeminfoPageTables = 26,
10596    MeminfoCommitLimit = 27,
10597    MeminfoCommitedAs = 28,
10598    MeminfoVmallocTotal = 29,
10599    MeminfoVmallocUsed = 30,
10600    MeminfoVmallocChunk = 31,
10601    MeminfoCmaTotal = 32,
10602    MeminfoCmaFree = 33,
10603    MeminfoGpu = 34,
10604    MeminfoZram = 35,
10605    MeminfoMisc = 36,
10606    MeminfoIonHeap = 37,
10607    MeminfoIonHeapPool = 38,
10608}
10609impl MeminfoCounters {
10610    /// String value of the enum field names used in the ProtoBuf definition.
10611    ///
10612    /// The values are not transformed in any way and thus are considered stable
10613    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10614    pub fn as_str_name(&self) -> &'static str {
10615        match self {
10616            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
10617            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
10618            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
10619            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
10620            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
10621            Self::MeminfoCached => "MEMINFO_CACHED",
10622            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
10623            Self::MeminfoActive => "MEMINFO_ACTIVE",
10624            Self::MeminfoInactive => "MEMINFO_INACTIVE",
10625            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
10626            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
10627            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
10628            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
10629            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
10630            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
10631            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
10632            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
10633            Self::MeminfoDirty => "MEMINFO_DIRTY",
10634            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
10635            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
10636            Self::MeminfoMapped => "MEMINFO_MAPPED",
10637            Self::MeminfoShmem => "MEMINFO_SHMEM",
10638            Self::MeminfoSlab => "MEMINFO_SLAB",
10639            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
10640            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
10641            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
10642            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
10643            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
10644            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
10645            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
10646            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
10647            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
10648            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
10649            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
10650            Self::MeminfoGpu => "MEMINFO_GPU",
10651            Self::MeminfoZram => "MEMINFO_ZRAM",
10652            Self::MeminfoMisc => "MEMINFO_MISC",
10653            Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
10654            Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
10655        }
10656    }
10657    /// Creates an enum from field names used in the ProtoBuf definition.
10658    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10659        match value {
10660            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
10661            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
10662            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
10663            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
10664            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
10665            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
10666            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
10667            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
10668            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
10669            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
10670            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
10671            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
10672            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
10673            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
10674            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
10675            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
10676            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
10677            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
10678            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
10679            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
10680            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
10681            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
10682            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
10683            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
10684            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
10685            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
10686            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
10687            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
10688            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
10689            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
10690            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
10691            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
10692            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
10693            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
10694            "MEMINFO_GPU" => Some(Self::MeminfoGpu),
10695            "MEMINFO_ZRAM" => Some(Self::MeminfoZram),
10696            "MEMINFO_MISC" => Some(Self::MeminfoMisc),
10697            "MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
10698            "MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
10699            _ => None,
10700        }
10701    }
10702}
10703/// Counter definitions for Linux's /proc/vmstat.
10704#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10705#[repr(i32)]
10706pub enum VmstatCounters {
10707    VmstatUnspecified = 0,
10708    VmstatNrFreePages = 1,
10709    VmstatNrAllocBatch = 2,
10710    VmstatNrInactiveAnon = 3,
10711    VmstatNrActiveAnon = 4,
10712    VmstatNrInactiveFile = 5,
10713    VmstatNrActiveFile = 6,
10714    VmstatNrUnevictable = 7,
10715    VmstatNrMlock = 8,
10716    VmstatNrAnonPages = 9,
10717    VmstatNrMapped = 10,
10718    VmstatNrFilePages = 11,
10719    VmstatNrDirty = 12,
10720    VmstatNrWriteback = 13,
10721    VmstatNrSlabReclaimable = 14,
10722    VmstatNrSlabUnreclaimable = 15,
10723    VmstatNrPageTablePages = 16,
10724    VmstatNrKernelStack = 17,
10725    VmstatNrOverhead = 18,
10726    VmstatNrUnstable = 19,
10727    VmstatNrBounce = 20,
10728    VmstatNrVmscanWrite = 21,
10729    VmstatNrVmscanImmediateReclaim = 22,
10730    VmstatNrWritebackTemp = 23,
10731    VmstatNrIsolatedAnon = 24,
10732    VmstatNrIsolatedFile = 25,
10733    VmstatNrShmem = 26,
10734    VmstatNrDirtied = 27,
10735    VmstatNrWritten = 28,
10736    VmstatNrPagesScanned = 29,
10737    VmstatWorkingsetRefault = 30,
10738    VmstatWorkingsetActivate = 31,
10739    VmstatWorkingsetNodereclaim = 32,
10740    VmstatNrAnonTransparentHugepages = 33,
10741    VmstatNrFreeCma = 34,
10742    VmstatNrSwapcache = 35,
10743    VmstatNrDirtyThreshold = 36,
10744    VmstatNrDirtyBackgroundThreshold = 37,
10745    VmstatPgpgin = 38,
10746    VmstatPgpgout = 39,
10747    VmstatPgpgoutclean = 40,
10748    VmstatPswpin = 41,
10749    VmstatPswpout = 42,
10750    VmstatPgallocDma = 43,
10751    VmstatPgallocNormal = 44,
10752    VmstatPgallocMovable = 45,
10753    VmstatPgfree = 46,
10754    VmstatPgactivate = 47,
10755    VmstatPgdeactivate = 48,
10756    VmstatPgfault = 49,
10757    VmstatPgmajfault = 50,
10758    VmstatPgrefillDma = 51,
10759    VmstatPgrefillNormal = 52,
10760    VmstatPgrefillMovable = 53,
10761    VmstatPgstealKswapdDma = 54,
10762    VmstatPgstealKswapdNormal = 55,
10763    VmstatPgstealKswapdMovable = 56,
10764    VmstatPgstealDirectDma = 57,
10765    VmstatPgstealDirectNormal = 58,
10766    VmstatPgstealDirectMovable = 59,
10767    VmstatPgscanKswapdDma = 60,
10768    VmstatPgscanKswapdNormal = 61,
10769    VmstatPgscanKswapdMovable = 62,
10770    VmstatPgscanDirectDma = 63,
10771    VmstatPgscanDirectNormal = 64,
10772    VmstatPgscanDirectMovable = 65,
10773    VmstatPgscanDirectThrottle = 66,
10774    VmstatPginodesteal = 67,
10775    VmstatSlabsScanned = 68,
10776    VmstatKswapdInodesteal = 69,
10777    VmstatKswapdLowWmarkHitQuickly = 70,
10778    VmstatKswapdHighWmarkHitQuickly = 71,
10779    VmstatPageoutrun = 72,
10780    VmstatAllocstall = 73,
10781    VmstatPgrotated = 74,
10782    VmstatDropPagecache = 75,
10783    VmstatDropSlab = 76,
10784    VmstatPgmigrateSuccess = 77,
10785    VmstatPgmigrateFail = 78,
10786    VmstatCompactMigrateScanned = 79,
10787    VmstatCompactFreeScanned = 80,
10788    VmstatCompactIsolated = 81,
10789    VmstatCompactStall = 82,
10790    VmstatCompactFail = 83,
10791    VmstatCompactSuccess = 84,
10792    VmstatCompactDaemonWake = 85,
10793    VmstatUnevictablePgsCulled = 86,
10794    VmstatUnevictablePgsScanned = 87,
10795    VmstatUnevictablePgsRescued = 88,
10796    VmstatUnevictablePgsMlocked = 89,
10797    VmstatUnevictablePgsMunlocked = 90,
10798    VmstatUnevictablePgsCleared = 91,
10799    VmstatUnevictablePgsStranded = 92,
10800    VmstatNrZspages = 93,
10801    VmstatNrIonHeap = 94,
10802    VmstatNrGpuHeap = 95,
10803    VmstatAllocstallDma = 96,
10804    VmstatAllocstallMovable = 97,
10805    VmstatAllocstallNormal = 98,
10806    VmstatCompactDaemonFreeScanned = 99,
10807    VmstatCompactDaemonMigrateScanned = 100,
10808    VmstatNrFastrpc = 101,
10809    VmstatNrIndirectlyReclaimable = 102,
10810    VmstatNrIonHeapPool = 103,
10811    VmstatNrKernelMiscReclaimable = 104,
10812    VmstatNrShadowCallStackBytes = 105,
10813    VmstatNrShmemHugepages = 106,
10814    VmstatNrShmemPmdmapped = 107,
10815    VmstatNrUnreclaimablePages = 108,
10816    VmstatNrZoneActiveAnon = 109,
10817    VmstatNrZoneActiveFile = 110,
10818    VmstatNrZoneInactiveAnon = 111,
10819    VmstatNrZoneInactiveFile = 112,
10820    VmstatNrZoneUnevictable = 113,
10821    VmstatNrZoneWritePending = 114,
10822    VmstatOomKill = 115,
10823    VmstatPglazyfree = 116,
10824    VmstatPglazyfreed = 117,
10825    VmstatPgrefill = 118,
10826    VmstatPgscanDirect = 119,
10827    VmstatPgscanKswapd = 120,
10828    VmstatPgskipDma = 121,
10829    VmstatPgskipMovable = 122,
10830    VmstatPgskipNormal = 123,
10831    VmstatPgstealDirect = 124,
10832    VmstatPgstealKswapd = 125,
10833    VmstatSwapRa = 126,
10834    VmstatSwapRaHit = 127,
10835    VmstatWorkingsetRestore = 128,
10836    VmstatAllocstallDevice = 129,
10837    VmstatAllocstallDma32 = 130,
10838    VmstatBalloonDeflate = 131,
10839    VmstatBalloonInflate = 132,
10840    VmstatBalloonMigrate = 133,
10841    VmstatCmaAllocFail = 134,
10842    VmstatCmaAllocSuccess = 135,
10843    VmstatNrFileHugepages = 136,
10844    VmstatNrFilePmdmapped = 137,
10845    VmstatNrFollPinAcquired = 138,
10846    VmstatNrFollPinReleased = 139,
10847    VmstatNrSecPageTablePages = 140,
10848    VmstatNrShadowCallStack = 141,
10849    VmstatNrSwapcached = 142,
10850    VmstatNrThrottledWritten = 143,
10851    VmstatPgallocDevice = 144,
10852    VmstatPgallocDma32 = 145,
10853    VmstatPgdemoteDirect = 146,
10854    VmstatPgdemoteKswapd = 147,
10855    VmstatPgreuse = 148,
10856    VmstatPgscanAnon = 149,
10857    VmstatPgscanFile = 150,
10858    VmstatPgskipDevice = 151,
10859    VmstatPgskipDma32 = 152,
10860    VmstatPgstealAnon = 153,
10861    VmstatPgstealFile = 154,
10862    VmstatThpCollapseAlloc = 155,
10863    VmstatThpCollapseAllocFailed = 156,
10864    VmstatThpDeferredSplitPage = 157,
10865    VmstatThpFaultAlloc = 158,
10866    VmstatThpFaultFallback = 159,
10867    VmstatThpFaultFallbackCharge = 160,
10868    VmstatThpFileAlloc = 161,
10869    VmstatThpFileFallback = 162,
10870    VmstatThpFileFallbackCharge = 163,
10871    VmstatThpFileMapped = 164,
10872    VmstatThpMigrationFail = 165,
10873    VmstatThpMigrationSplit = 166,
10874    VmstatThpMigrationSuccess = 167,
10875    VmstatThpScanExceedNonePte = 168,
10876    VmstatThpScanExceedSharePte = 169,
10877    VmstatThpScanExceedSwapPte = 170,
10878    VmstatThpSplitPage = 171,
10879    VmstatThpSplitPageFailed = 172,
10880    VmstatThpSplitPmd = 173,
10881    VmstatThpSwpout = 174,
10882    VmstatThpSwpoutFallback = 175,
10883    VmstatThpZeroPageAlloc = 176,
10884    VmstatThpZeroPageAllocFailed = 177,
10885    VmstatVmaLockAbort = 178,
10886    VmstatVmaLockMiss = 179,
10887    VmstatVmaLockRetry = 180,
10888    VmstatVmaLockSuccess = 181,
10889    VmstatWorkingsetActivateAnon = 182,
10890    VmstatWorkingsetActivateFile = 183,
10891    VmstatWorkingsetNodes = 184,
10892    VmstatWorkingsetRefaultAnon = 185,
10893    VmstatWorkingsetRefaultFile = 186,
10894    VmstatWorkingsetRestoreAnon = 187,
10895    VmstatWorkingsetRestoreFile = 188,
10896}
10897impl VmstatCounters {
10898    /// String value of the enum field names used in the ProtoBuf definition.
10899    ///
10900    /// The values are not transformed in any way and thus are considered stable
10901    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10902    pub fn as_str_name(&self) -> &'static str {
10903        match self {
10904            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
10905            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
10906            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
10907            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
10908            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
10909            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
10910            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
10911            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
10912            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
10913            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
10914            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
10915            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
10916            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
10917            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
10918            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
10919            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
10920            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
10921            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
10922            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
10923            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
10924            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
10925            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
10926            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
10927            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
10928            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
10929            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
10930            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
10931            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
10932            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
10933            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
10934            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
10935            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
10936            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
10937            Self::VmstatNrAnonTransparentHugepages => {
10938                "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
10939            }
10940            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
10941            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
10942            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
10943            Self::VmstatNrDirtyBackgroundThreshold => {
10944                "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
10945            }
10946            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
10947            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
10948            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
10949            Self::VmstatPswpin => "VMSTAT_PSWPIN",
10950            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
10951            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
10952            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
10953            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
10954            Self::VmstatPgfree => "VMSTAT_PGFREE",
10955            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
10956            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
10957            Self::VmstatPgfault => "VMSTAT_PGFAULT",
10958            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
10959            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
10960            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
10961            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
10962            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
10963            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
10964            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
10965            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
10966            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
10967            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
10968            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
10969            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
10970            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
10971            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
10972            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
10973            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
10974            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
10975            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
10976            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
10977            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
10978            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
10979            Self::VmstatKswapdHighWmarkHitQuickly => {
10980                "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
10981            }
10982            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
10983            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
10984            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
10985            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
10986            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
10987            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
10988            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
10989            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
10990            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
10991            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
10992            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
10993            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
10994            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
10995            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
10996            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
10997            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
10998            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
10999            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
11000            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
11001            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
11002            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
11003            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
11004            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
11005            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
11006            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
11007            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
11008            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
11009            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
11010            Self::VmstatCompactDaemonMigrateScanned => {
11011                "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
11012            }
11013            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
11014            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
11015            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
11016            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
11017            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
11018            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
11019            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
11020            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
11021            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
11022            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
11023            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
11024            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
11025            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
11026            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
11027            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
11028            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
11029            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
11030            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
11031            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
11032            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
11033            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
11034            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
11035            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
11036            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
11037            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
11038            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
11039            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
11040            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
11041            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
11042            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
11043            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
11044            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
11045            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
11046            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
11047            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
11048            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
11049            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
11050            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
11051            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
11052            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
11053            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
11054            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
11055            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
11056            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
11057            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
11058            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
11059            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
11060            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
11061            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
11062            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
11063            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
11064            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
11065            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
11066            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
11067            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
11068            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
11069            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
11070            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
11071            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
11072            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
11073            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
11074            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
11075            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
11076            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
11077            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
11078            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
11079            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
11080            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
11081            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
11082            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
11083            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
11084            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
11085            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
11086            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
11087            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
11088            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
11089            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
11090            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
11091            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
11092            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
11093            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
11094            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
11095            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
11096            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
11097            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
11098            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
11099            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
11100            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
11101        }
11102    }
11103    /// Creates an enum from field names used in the ProtoBuf definition.
11104    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11105        match value {
11106            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
11107            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
11108            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
11109            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
11110            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
11111            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
11112            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
11113            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
11114            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
11115            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
11116            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
11117            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
11118            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
11119            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
11120            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
11121            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
11122            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
11123            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
11124            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
11125            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
11126            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
11127            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
11128            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
11129                Some(Self::VmstatNrVmscanImmediateReclaim)
11130            }
11131            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
11132            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
11133            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
11134            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
11135            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
11136            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
11137            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
11138            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
11139            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
11140            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
11141            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
11142                Some(Self::VmstatNrAnonTransparentHugepages)
11143            }
11144            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
11145            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
11146            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
11147            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
11148                Some(Self::VmstatNrDirtyBackgroundThreshold)
11149            }
11150            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
11151            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
11152            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
11153            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
11154            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
11155            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
11156            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
11157            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
11158            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
11159            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
11160            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
11161            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
11162            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
11163            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
11164            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
11165            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
11166            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
11167            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
11168            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
11169            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
11170            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
11171            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
11172            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
11173            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
11174            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
11175            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
11176            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
11177            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
11178            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
11179            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
11180            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
11181            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
11182            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
11183                Some(Self::VmstatKswapdLowWmarkHitQuickly)
11184            }
11185            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
11186                Some(Self::VmstatKswapdHighWmarkHitQuickly)
11187            }
11188            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
11189            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
11190            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
11191            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
11192            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
11193            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
11194            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
11195            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
11196            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
11197            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
11198            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
11199            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
11200            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
11201            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
11202            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
11203            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
11204            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
11205            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
11206            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
11207                Some(Self::VmstatUnevictablePgsMunlocked)
11208            }
11209            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
11210            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
11211            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
11212            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
11213            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
11214            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
11215            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
11216            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
11217            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
11218                Some(Self::VmstatCompactDaemonFreeScanned)
11219            }
11220            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
11221                Some(Self::VmstatCompactDaemonMigrateScanned)
11222            }
11223            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
11224            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
11225                Some(Self::VmstatNrIndirectlyReclaimable)
11226            }
11227            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
11228            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
11229                Some(Self::VmstatNrKernelMiscReclaimable)
11230            }
11231            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
11232                Some(Self::VmstatNrShadowCallStackBytes)
11233            }
11234            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
11235            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
11236            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
11237            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
11238            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
11239            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
11240            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
11241            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
11242            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
11243            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
11244            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
11245            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
11246            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
11247            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
11248            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
11249            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
11250            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
11251            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
11252            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
11253            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
11254            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
11255            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
11256            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
11257            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
11258            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
11259            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
11260            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
11261            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
11262            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
11263            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
11264            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
11265            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
11266            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
11267            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
11268            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
11269            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
11270            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
11271            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
11272            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
11273            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
11274            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
11275            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
11276            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
11277            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
11278            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
11279            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
11280            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
11281            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
11282            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
11283            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
11284            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
11285                Some(Self::VmstatThpCollapseAllocFailed)
11286            }
11287            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
11288            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
11289            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
11290            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
11291                Some(Self::VmstatThpFaultFallbackCharge)
11292            }
11293            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
11294            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
11295            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
11296            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
11297            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
11298            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
11299            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
11300            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
11301            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
11302            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
11303            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
11304            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
11305            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
11306            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
11307            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
11308            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
11309            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
11310                Some(Self::VmstatThpZeroPageAllocFailed)
11311            }
11312            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
11313            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
11314            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
11315            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
11316            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
11317            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
11318            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
11319            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
11320            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
11321            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
11322            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
11323            _ => None,
11324        }
11325    }
11326}
11327/// This file defines the configuration for the Linux /proc poller data source,
11328/// which injects counters in the trace.
11329/// Counters that are needed in the trace must be explicitly listed in the
11330/// *_counters fields. This is to avoid spamming the trace with all counters
11331/// at all times.
11332/// The sampling rate is configurable. All polling rates (*_period_ms) need
11333/// to be integer multiples of each other.
11334/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
11335/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
11336#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11337pub struct SysStatsConfig {
11338    /// Polls /proc/meminfo every X ms, if non-zero.
11339    /// This is required to be > 10ms to avoid excessive CPU usage.
11340    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
11341    #[prost(uint32, optional, tag = "1")]
11342    pub meminfo_period_ms: ::core::option::Option<u32>,
11343    /// If empty all known counters are reported. Otherwise, only the counters
11344    /// specified below are reported.
11345    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
11346    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
11347    /// Polls /proc/vmstat every X ms, if non-zero.
11348    /// This is required to be > 10ms to avoid excessive CPU usage.
11349    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
11350    #[prost(uint32, optional, tag = "3")]
11351    pub vmstat_period_ms: ::core::option::Option<u32>,
11352    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
11353    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
11354    /// Pols /proc/stat every X ms, if non-zero.
11355    /// This is required to be > 10ms to avoid excessive CPU usage.
11356    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
11357    #[prost(uint32, optional, tag = "5")]
11358    pub stat_period_ms: ::core::option::Option<u32>,
11359    #[prost(
11360        enumeration = "sys_stats_config::StatCounters",
11361        repeated,
11362        packed = "false",
11363        tag = "6"
11364    )]
11365    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
11366    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
11367    /// This is required to be > 10ms to avoid excessive CPU usage.
11368    /// This option can be used to record unchanging values.
11369    /// Updates from frequency changes can come from ftrace/set_clock_rate.
11370    #[prost(uint32, optional, tag = "7")]
11371    pub devfreq_period_ms: ::core::option::Option<u32>,
11372    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
11373    /// This is required to be > 10ms to avoid excessive CPU usage.
11374    #[prost(uint32, optional, tag = "8")]
11375    pub cpufreq_period_ms: ::core::option::Option<u32>,
11376    /// Polls /proc/buddyinfo every X ms, if non-zero.
11377    /// This is required to be > 10ms to avoid excessive CPU usage.
11378    #[prost(uint32, optional, tag = "9")]
11379    pub buddyinfo_period_ms: ::core::option::Option<u32>,
11380    /// Polls /proc/diskstats every X ms, if non-zero.
11381    /// This is required to be > 10ms to avoid excessive CPU usage.
11382    #[prost(uint32, optional, tag = "10")]
11383    pub diskstat_period_ms: ::core::option::Option<u32>,
11384    /// Polls /proc/pressure/* every X ms, if non-zero.
11385    /// This is required to be > 10ms to avoid excessive CPU usage.
11386    #[prost(uint32, optional, tag = "11")]
11387    pub psi_period_ms: ::core::option::Option<u32>,
11388    /// Polls /sys/class/thermal/* every X ms, if non-zero.
11389    /// This is required to be > 10ms to avoid excessive CPU usage.
11390    #[prost(uint32, optional, tag = "12")]
11391    pub thermal_period_ms: ::core::option::Option<u32>,
11392    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
11393    /// This is required to be > 10ms to avoid excessive CPU usage.
11394    #[prost(uint32, optional, tag = "13")]
11395    pub cpuidle_period_ms: ::core::option::Option<u32>,
11396    /// Polls device-specific GPU frequency info every X ms, if non-zero.
11397    /// This is required to be > 10ms to avoid excessive CPU usage.
11398    #[prost(uint32, optional, tag = "14")]
11399    pub gpufreq_period_ms: ::core::option::Option<u32>,
11400    /// Polls /proc/slabinfo every X ms, if non-zero.
11401    /// This is required to be > 10ms to avoid excessive CPU usage.
11402    #[prost(uint32, optional, tag = "15")]
11403    pub slab_period_ms: ::core::option::Option<u32>,
11404}
11405/// Nested message and enum types in `SysStatsConfig`.
11406pub mod sys_stats_config {
11407    #[derive(
11408        Clone,
11409        Copy,
11410        Debug,
11411        PartialEq,
11412        Eq,
11413        Hash,
11414        PartialOrd,
11415        Ord,
11416        ::prost::Enumeration
11417    )]
11418    #[repr(i32)]
11419    pub enum StatCounters {
11420        StatUnspecified = 0,
11421        StatCpuTimes = 1,
11422        StatIrqCounts = 2,
11423        StatSoftirqCounts = 3,
11424        StatForkCount = 4,
11425    }
11426    impl StatCounters {
11427        /// String value of the enum field names used in the ProtoBuf definition.
11428        ///
11429        /// The values are not transformed in any way and thus are considered stable
11430        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11431        pub fn as_str_name(&self) -> &'static str {
11432            match self {
11433                Self::StatUnspecified => "STAT_UNSPECIFIED",
11434                Self::StatCpuTimes => "STAT_CPU_TIMES",
11435                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
11436                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
11437                Self::StatForkCount => "STAT_FORK_COUNT",
11438            }
11439        }
11440        /// Creates an enum from field names used in the ProtoBuf definition.
11441        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11442            match value {
11443                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
11444                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
11445                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
11446                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
11447                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
11448                _ => None,
11449            }
11450        }
11451    }
11452}
11453/// The configuration for a fake producer used in tests.
11454#[derive(Clone, PartialEq, ::prost::Message)]
11455pub struct TestConfig {
11456    /// The number of messages the fake producer should send.
11457    #[prost(uint32, optional, tag = "1")]
11458    pub message_count: ::core::option::Option<u32>,
11459    /// The maximum number of messages which should be sent each second.
11460    /// The actual obserced speed may be lower if the producer is unable to
11461    /// work fast enough.
11462    /// If this is zero or unset, the producer will send as fast as possible.
11463    #[prost(uint32, optional, tag = "2")]
11464    pub max_messages_per_second: ::core::option::Option<u32>,
11465    /// The seed value for a simple multiplicative congruential pseudo-random
11466    /// number sequence.
11467    #[prost(uint32, optional, tag = "3")]
11468    pub seed: ::core::option::Option<u32>,
11469    /// The size of each message in bytes. Should be greater than or equal 5 to
11470    /// account for the number of bytes needed to encode the random number and a
11471    /// null byte for the string.
11472    #[prost(uint32, optional, tag = "4")]
11473    pub message_size: ::core::option::Option<u32>,
11474    /// Whether the producer should send a event batch when the data source is
11475    /// is initially registered.
11476    #[prost(bool, optional, tag = "5")]
11477    pub send_batch_on_register: ::core::option::Option<bool>,
11478    #[prost(message, optional, tag = "6")]
11479    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
11480}
11481/// Nested message and enum types in `TestConfig`.
11482pub mod test_config {
11483    #[derive(Clone, PartialEq, ::prost::Message)]
11484    pub struct DummyFields {
11485        #[prost(uint32, optional, tag = "1")]
11486        pub field_uint32: ::core::option::Option<u32>,
11487        #[prost(int32, optional, tag = "2")]
11488        pub field_int32: ::core::option::Option<i32>,
11489        #[prost(uint64, optional, tag = "3")]
11490        pub field_uint64: ::core::option::Option<u64>,
11491        #[prost(int64, optional, tag = "4")]
11492        pub field_int64: ::core::option::Option<i64>,
11493        #[prost(fixed64, optional, tag = "5")]
11494        pub field_fixed64: ::core::option::Option<u64>,
11495        #[prost(sfixed64, optional, tag = "6")]
11496        pub field_sfixed64: ::core::option::Option<i64>,
11497        #[prost(fixed32, optional, tag = "7")]
11498        pub field_fixed32: ::core::option::Option<u32>,
11499        #[prost(sfixed32, optional, tag = "8")]
11500        pub field_sfixed32: ::core::option::Option<i32>,
11501        #[prost(double, optional, tag = "9")]
11502        pub field_double: ::core::option::Option<f64>,
11503        #[prost(float, optional, tag = "10")]
11504        pub field_float: ::core::option::Option<f32>,
11505        #[prost(sint64, optional, tag = "11")]
11506        pub field_sint64: ::core::option::Option<i64>,
11507        #[prost(sint32, optional, tag = "12")]
11508        pub field_sint32: ::core::option::Option<i32>,
11509        #[prost(string, optional, tag = "13")]
11510        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
11511        #[prost(bytes = "vec", optional, tag = "14")]
11512        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11513    }
11514}
11515/// The following fields define the set of enabled trace categories. Each list
11516/// item is a glob.
11517///
11518/// To determine if category is enabled, it is checked against the filters in
11519/// the following order:
11520///
11521///    1. Exact matches in enabled categories.
11522///    2. Exact matches in enabled tags.
11523///    3. Exact matches in disabled categories.
11524///    4. Exact matches in disabled tags.
11525///    5. Pattern matches in enabled categories.
11526///    6. Pattern matches in enabled tags.
11527///    7. Pattern matches in disabled categories.
11528///    8. Pattern matches in disabled tags.
11529///
11530/// If none of the steps produced a match:
11531///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
11532///   default.
11533///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
11534///
11535/// Examples:
11536///
11537///   - To enable all non-slow/debug categories:
11538///
11539///        enabled_categories: "*"
11540///
11541///   - To enable specific categories:
11542///
11543///        disabled_categories: "*"
11544///        enabled_categories: "my_category"
11545///        enabled_categories: "my_category2"
11546///
11547///   - To enable only categories with a specific tag:
11548///
11549///        disabled_tags: "*"
11550///        enabled_tags: "my_tag"
11551///
11552#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11553pub struct TrackEventConfig {
11554    /// Default: \[\]
11555    #[prost(string, repeated, tag = "1")]
11556    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11557    /// Default: \[\]
11558    #[prost(string, repeated, tag = "2")]
11559    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11560    /// Default: \["slow", "debug"\]
11561    #[prost(string, repeated, tag = "3")]
11562    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11563    /// Default: \[\]
11564    #[prost(string, repeated, tag = "4")]
11565    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11566    /// Default: false (i.e. enabled by default)
11567    #[prost(bool, optional, tag = "5")]
11568    pub disable_incremental_timestamps: ::core::option::Option<bool>,
11569    /// Allows to specify a custom unit different than the default (ns).
11570    /// Also affects thread timestamps if enable_thread_time_sampling = true.
11571    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
11572    /// 3000 ns = 3 us.
11573    /// Default: 1 (if unset, it should be read as 1).
11574    #[prost(uint64, optional, tag = "6")]
11575    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
11576    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
11577    /// When true, any debug annotations provided as arguments to the
11578    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
11579    /// still be emitted even if set to true.
11580    #[prost(bool, optional, tag = "7")]
11581    pub filter_debug_annotations: ::core::option::Option<bool>,
11582    /// Default: false (i.e. disabled)
11583    /// When true, the SDK samples and emits the current thread time counter value
11584    /// for each event on the current thread's track. This value represents the
11585    /// total CPU time consumed by that thread since its creation.
11586    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
11587    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
11588    #[prost(bool, optional, tag = "8")]
11589    pub enable_thread_time_sampling: ::core::option::Option<bool>,
11590    /// When enable_thread_time_sampling is true, and this is specified, thread
11591    /// time is sampled only if the elapsed wall time >
11592    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
11593    /// Effectively, this means thread time will have a leeway of
11594    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
11595    #[prost(uint64, optional, tag = "10")]
11596    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
11597    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
11598    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
11599    /// out.
11600    #[prost(bool, optional, tag = "9")]
11601    pub filter_dynamic_event_names: ::core::option::Option<bool>,
11602}
11603/// This data-source does a one-off recording of system information when
11604/// the trace starts.
11605/// Currently this includes:
11606/// - Values of
11607/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
11608/// datasource has no configuration options at present.
11609#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11610pub struct SystemInfoConfig {
11611    /// If true, records hardware interrupt ID-to-name mappings from
11612    /// /proc/interrupts.
11613    #[prost(bool, optional, tag = "1")]
11614    pub irq_names: ::core::option::Option<bool>,
11615}
11616#[derive(Clone, PartialEq, ::prost::Message)]
11617pub struct ChromiumHistogramSamplesConfig {
11618    /// List of histograms to record. If no histogram is specified, all histograms
11619    /// are recorded.
11620    #[prost(message, repeated, tag = "1")]
11621    pub histograms: ::prost::alloc::vec::Vec<
11622        chromium_histogram_samples_config::HistogramSample,
11623    >,
11624    /// Default: false (i.e. histogram names are NOT filtered out by default)
11625    /// When true, histogram_name will be filtered out.
11626    #[prost(bool, optional, tag = "2")]
11627    pub filter_histogram_names: ::core::option::Option<bool>,
11628}
11629/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
11630pub mod chromium_histogram_samples_config {
11631    /// Records when a value within the specified bounds \[min_value, max_value\] is
11632    /// emitted into a Chrome histogram.
11633    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11634    pub struct HistogramSample {
11635        #[prost(string, optional, tag = "1")]
11636        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
11637        #[prost(int64, optional, tag = "2")]
11638        pub min_value: ::core::option::Option<i64>,
11639        #[prost(int64, optional, tag = "3")]
11640        pub max_value: ::core::option::Option<i64>,
11641    }
11642}
11643/// Configuration for the "linux.systemd_journald" data source.
11644/// Next field id: 4
11645#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11646pub struct SystemdJournaldConfig {
11647    /// Minimum syslog priority level to capture (inclusive).
11648    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
11649    /// Default (0 / unset): capture all priorities (equivalent to 7).
11650    #[prost(uint32, optional, tag = "1")]
11651    pub min_prio: ::core::option::Option<u32>,
11652    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
11653    /// matches one of these strings.
11654    #[prost(string, repeated, tag = "2")]
11655    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11656    /// If non-empty, only capture journal entries from these systemd unit names.
11657    #[prost(string, repeated, tag = "3")]
11658    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11659}
11660/// QnxConfig is used with trace_qnx_probes build from
11661/// <https://github.com/qnx-ports/perfetto>
11662#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11663pub struct QnxConfig {
11664    /// The number of buffers that tracelog will init for the QNX trace.
11665    #[prost(uint32, optional, tag = "1")]
11666    pub qnx_kernel_buffers: ::core::option::Option<u32>,
11667    /// The number of kernel buffers that tracelog will init for the QNX trace.
11668    #[prost(uint32, optional, tag = "2")]
11669    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
11670    /// Flag indicating whether the QNX kernel tracing should produce wide
11671    /// events which contain additional data or fast events which are most
11672    /// concise. In fast mode we lose the priority information
11673    #[prost(bool, optional, tag = "3")]
11674    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
11675    /// The number of pages initialized by default the parser's page cache.
11676    #[prost(uint32, optional, tag = "4")]
11677    pub qnx_cache_pages: ::core::option::Option<u32>,
11678    /// The max pages the page cache should allocate (must be at least as big)
11679    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
11680    /// unbounded. The cache will prefer to re-use existing pages so growth will
11681    /// only happen when needed (when parser is not keeping up).
11682    #[prost(int32, optional, tag = "5")]
11683    pub qnx_cache_max_pages: ::core::option::Option<i32>,
11684    /// The initial size of the the buffer used to hold the trace header values
11685    /// this dynamic buffer will grow as needed but reallocs can be avoided by
11686    /// selecting an initial size large enough to hold all the initial header
11687    /// data.
11688    #[prost(uint32, optional, tag = "6")]
11689    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
11690}
11691/// The configuration that is passed to each data source when starting tracing.
11692/// Next id: 143
11693#[derive(Clone, PartialEq, ::prost::Message)]
11694pub struct DataSourceConfig {
11695    /// Data source unique name, e.g., "linux.ftrace". This must match
11696    /// the name passed by the data source when it registers (see
11697    /// RegisterDataSource()).
11698    #[prost(string, optional, tag = "1")]
11699    pub name: ::core::option::Option<::prost::alloc::string::String>,
11700    /// The index of the logging buffer where TracePacket(s) will be stored.
11701    /// This field is quite subtle as it has a double semantic:
11702    /// 1) When the config is passed, this field is a 0-based index relative to the
11703    ///     buffer array in the TraceConfig and defines the mapping between data
11704    ///     sources and config. From v54 this is optional because the user can
11705    ///     instead use target_buffer_name.
11706    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
11707    ///     producer, it overwrites this field with the global buffer index (which
11708    ///     depends on other tracing sessions active). This tells the producer which
11709    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
11710    ///     service always sets the resolved global id, even when using
11711    ///     `target_buffer_name`.
11712    /// In hindsight we should have used two different fields given even in v0 they
11713    /// had a different semantic. But now it's too late as this would be a major
11714    /// protocol breaking change.
11715    #[prost(uint32, optional, tag = "2")]
11716    pub target_buffer: ::core::option::Option<u32>,
11717    /// Alternative to |target_buffer|. References a buffer by name (as specified
11718    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
11719    /// readable and less error-prone than using buffer indices.
11720    /// If both |target_buffer| and |target_buffer_name| are specified, they must
11721    /// refer to the same buffer, otherwise the service will reject the config.
11722    /// Using both fields allows configs to work with both old and new versions
11723    /// of the tracing service. Introduced in v54.
11724    #[prost(string, optional, tag = "11")]
11725    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
11726    /// Set by the service to indicate the duration of the trace.
11727    /// DO NOT SET in consumer as this will be overridden by the service.
11728    #[prost(uint32, optional, tag = "3")]
11729    pub trace_duration_ms: ::core::option::Option<u32>,
11730    /// If true, |trace_duration_ms| should count also time in suspend. This
11731    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
11732    #[prost(bool, optional, tag = "122")]
11733    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
11734    /// Set by the service to indicate how long it waits after StopDataSource.
11735    /// DO NOT SET in consumer as this will be overridden by the service.
11736    #[prost(uint32, optional, tag = "7")]
11737    pub stop_timeout_ms: ::core::option::Option<u32>,
11738    /// Set by the service to indicate whether this tracing session has extra
11739    /// guardrails.
11740    /// DO NOT SET in consumer as this will be overridden by the service.
11741    #[prost(bool, optional, tag = "6")]
11742    pub enable_extra_guardrails: ::core::option::Option<bool>,
11743    /// Set by the service to indicate which user initiated this trace.
11744    /// DO NOT SET in consumer as this will be overridden by the service.
11745    #[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
11746    pub session_initiator: ::core::option::Option<i32>,
11747    /// Set by the service to indicate which tracing session the data source
11748    /// belongs to. The intended use case for this is checking if two data sources,
11749    /// one of which produces metadata for the other one, belong to the same trace
11750    /// session and hence should be linked together.
11751    /// This field was introduced in Aug 2018 after Android P.
11752    /// DO NOT SET in consumer as this will be overridden by the service.
11753    #[prost(uint64, optional, tag = "4")]
11754    pub tracing_session_id: ::core::option::Option<u64>,
11755    /// How to behave when the producer runs out of space in the shared memory
11756    /// buffer. This is only honored by some data sources (in the SDK, the data
11757    /// sources registered with a configurable buffer exhausted policy).
11758    #[prost(
11759        enumeration = "data_source_config::BufferExhaustedPolicy",
11760        optional,
11761        tag = "9"
11762    )]
11763    pub buffer_exhausted_policy: ::core::option::Option<i32>,
11764    #[prost(message, optional, tag = "10")]
11765    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
11766    /// TODO(primiano): today when we enable a protovm_config, we actually accept
11767    /// that if N producers advertise M different versions of the same program we
11768    /// will create M instances of that program.
11769    /// To overcome this, we could move the program to the TraceConfig. But doing
11770    /// so would bloat the trace config size too big and create problems to statsd.
11771    /// Once the config store (b/482305876) exists we should move protovm programs
11772    /// onto that.
11773    #[prost(message, optional, tag = "12")]
11774    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
11775    /// Data source name: linux.ftrace
11776    #[prost(message, optional, tag = "100")]
11777    pub ftrace_config: ::core::option::Option<FtraceConfig>,
11778    /// Data source name: linux.inode_file_map
11779    #[prost(message, optional, tag = "102")]
11780    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
11781    /// Data source name: linux.process_stats
11782    #[prost(message, optional, tag = "103")]
11783    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
11784    /// Data source name: linux.sys_stats
11785    #[prost(message, optional, tag = "104")]
11786    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
11787    /// Data source name: android.heapprofd
11788    /// Introduced in Android 10.
11789    #[prost(message, optional, tag = "105")]
11790    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
11791    /// Data source name: android.java_hprof
11792    /// Introduced in Android 11.
11793    #[prost(message, optional, tag = "110")]
11794    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
11795    /// Data source name: android.power
11796    #[prost(message, optional, tag = "106")]
11797    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
11798    /// Data source name: android.log
11799    #[prost(message, optional, tag = "107")]
11800    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
11801    /// Data source name: gpu.counters
11802    #[prost(message, optional, tag = "108")]
11803    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
11804    /// Data source name: android.game_interventions
11805    #[prost(message, optional, tag = "116")]
11806    pub android_game_intervention_list_config: ::core::option::Option<
11807        AndroidGameInterventionListConfig,
11808    >,
11809    /// Data source name: android.packages_list
11810    #[prost(message, optional, tag = "109")]
11811    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
11812    /// Data source name: linux.perf
11813    #[prost(message, optional, tag = "111")]
11814    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
11815    /// Data source name: vulkan.memory_tracker
11816    #[prost(message, optional, tag = "112")]
11817    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
11818    /// Data source name: track_event
11819    #[prost(message, optional, tag = "113")]
11820    pub track_event_config: ::core::option::Option<TrackEventConfig>,
11821    /// Data source name: android.polled_state
11822    #[prost(message, optional, tag = "114")]
11823    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
11824    /// Data source name: android.system_property
11825    #[prost(message, optional, tag = "118")]
11826    pub android_system_property_config: ::core::option::Option<
11827        AndroidSystemPropertyConfig,
11828    >,
11829    /// Data source name: android.statsd
11830    #[prost(message, optional, tag = "117")]
11831    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
11832    /// Data source name: linux.system_info
11833    #[prost(message, optional, tag = "119")]
11834    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
11835    /// Data source name: linux.frozen_ftrace
11836    #[prost(message, optional, tag = "136")]
11837    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
11838    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
11839    /// avoid proto serialization and de-serialization there because that would
11840    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
11841    /// C++ class for it so it can pass around plain C++ objets.
11842    #[prost(message, optional, tag = "101")]
11843    pub chrome_config: ::core::option::Option<ChromeConfig>,
11844    /// Data source name: code.v8.dev
11845    #[prost(message, optional, tag = "127")]
11846    pub v8_config: ::core::option::Option<V8Config>,
11847    /// If an interceptor is specified here, packets for this data source will be
11848    /// rerouted to the interceptor instead of the main trace buffer. This can be
11849    /// used, for example, to write trace data into ETW or for logging trace points
11850    /// to the console.
11851    ///
11852    /// Note that interceptors are only supported by data sources registered
11853    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
11854    /// traced_probes) may not support interception.
11855    #[prost(message, optional, tag = "115")]
11856    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
11857    /// Data source name: android.network_packets.
11858    /// Introduced in Android 14 (U).
11859    #[prost(message, optional, tag = "120")]
11860    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
11861    /// Data source name: android.surfaceflinger.layers
11862    #[prost(message, optional, tag = "121")]
11863    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
11864    /// Data source name: android.surfaceflinger.transactions
11865    #[prost(message, optional, tag = "123")]
11866    pub surfaceflinger_transactions_config: ::core::option::Option<
11867        SurfaceFlingerTransactionsConfig,
11868    >,
11869    /// Data source name: android.sdk_sysprop_guard
11870    /// Introduced in Android 14 (U) QPR1.
11871    #[prost(message, optional, tag = "124")]
11872    pub android_sdk_sysprop_guard_config: ::core::option::Option<
11873        AndroidSdkSyspropGuardConfig,
11874    >,
11875    /// Data source name: windows.etw
11876    #[prost(message, optional, tag = "125")]
11877    pub etw_config: ::core::option::Option<EtwConfig>,
11878    /// Data source name: android.protolog
11879    #[prost(message, optional, tag = "126")]
11880    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
11881    /// Data source name: android.input.inputevent
11882    #[prost(message, optional, tag = "128")]
11883    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
11884    /// Data source name: android.pixel.modem
11885    #[prost(message, optional, tag = "129")]
11886    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
11887    /// Data source name: android.windowmanager
11888    #[prost(message, optional, tag = "130")]
11889    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
11890    /// Data source name: org.chromium.system_metrics
11891    #[prost(message, optional, tag = "131")]
11892    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
11893    /// Data source name: android.kernel_wakelocks
11894    #[prost(message, optional, tag = "132")]
11895    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
11896    /// Data source name: gpu.renderstages
11897    #[prost(message, optional, tag = "133")]
11898    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
11899    /// Data source name: org.chromium.histogram_samples
11900    #[prost(message, optional, tag = "134")]
11901    pub chromium_histogram_samples: ::core::option::Option<
11902        ChromiumHistogramSamplesConfig,
11903    >,
11904    /// Data source name: android.app_wakelocks
11905    #[prost(message, optional, tag = "135")]
11906    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
11907    /// Data source name: android.cpu_per_uid
11908    #[prost(message, optional, tag = "137")]
11909    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
11910    /// Data source name: android.user_list
11911    #[prost(message, optional, tag = "138")]
11912    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
11913    /// Data source name: android.inputmethod
11914    #[prost(message, optional, tag = "139")]
11915    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
11916    /// Data source name: android.aflags
11917    #[prost(message, optional, tag = "140")]
11918    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
11919    /// Data source name: linux.systemd_journald
11920    #[prost(message, optional, tag = "141")]
11921    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
11922    /// Data source name: android.display.video
11923    #[prost(message, optional, tag = "142")]
11924    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
11925    /// Data source name: qnx.kernel
11926    #[prost(message, optional, tag = "150")]
11927    pub qnx_config: ::core::option::Option<QnxConfig>,
11928    /// This is a fallback mechanism to send a free-form text config to the
11929    /// producer. In theory this should never be needed. All the code that
11930    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
11931    /// the trace config proto and propagate unknown fields. However, if anything
11932    /// in the pipeline (client or backend) ends up breaking this forward compat
11933    /// plan, this field will become the escape hatch to allow future data sources
11934    /// to get some meaningful configuration.
11935    #[prost(string, optional, tag = "1000")]
11936    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
11937    /// This field is only used for testing.
11938    #[prost(message, optional, tag = "1001")]
11939    pub for_testing: ::core::option::Option<TestConfig>,
11940}
11941/// Nested message and enum types in `DataSourceConfig`.
11942pub mod data_source_config {
11943    #[derive(
11944        Clone,
11945        Copy,
11946        Debug,
11947        PartialEq,
11948        Eq,
11949        Hash,
11950        PartialOrd,
11951        Ord,
11952        ::prost::Enumeration
11953    )]
11954    #[repr(i32)]
11955    pub enum SessionInitiator {
11956        Unspecified = 0,
11957        /// This trace was initiated from a trusted system app has DUMP and
11958        /// USAGE_STATS permission. This system app is expected to not expose the
11959        /// trace to the user of the device.
11960        /// This is determined by checking the UID initiating the trace.
11961        TrustedSystem = 1,
11962    }
11963    impl SessionInitiator {
11964        /// String value of the enum field names used in the ProtoBuf definition.
11965        ///
11966        /// The values are not transformed in any way and thus are considered stable
11967        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11968        pub fn as_str_name(&self) -> &'static str {
11969            match self {
11970                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
11971                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
11972            }
11973        }
11974        /// Creates an enum from field names used in the ProtoBuf definition.
11975        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11976            match value {
11977                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
11978                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
11979                _ => None,
11980            }
11981        }
11982    }
11983    #[derive(
11984        Clone,
11985        Copy,
11986        Debug,
11987        PartialEq,
11988        Eq,
11989        Hash,
11990        PartialOrd,
11991        Ord,
11992        ::prost::Enumeration
11993    )]
11994    #[repr(i32)]
11995    pub enum BufferExhaustedPolicy {
11996        /// The data source will use its default buffer exhausted policy, specified
11997        /// by the code when the data source is registered.
11998        BufferExhaustedUnspecified = 0,
11999        /// The data source will drop packets when there's no space in the shared
12000        /// memory buffer.
12001        BufferExhaustedDrop = 1,
12002        /// The data source will wait when there's no space in the shared memory
12003        /// buffer. If there's still not space, after a few seconds, the whole
12004        /// producer process will be aborted.
12005        BufferExhaustedStallThenAbort = 2,
12006        /// The data source will wait when there's no space in the shared memory
12007        /// buffer.  If there's still not space, after a few seconds, the data source
12008        /// will drop packets.
12009        BufferExhaustedStallThenDrop = 3,
12010    }
12011    impl BufferExhaustedPolicy {
12012        /// String value of the enum field names used in the ProtoBuf definition.
12013        ///
12014        /// The values are not transformed in any way and thus are considered stable
12015        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12016        pub fn as_str_name(&self) -> &'static str {
12017            match self {
12018                Self::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
12019                Self::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
12020                Self::BufferExhaustedStallThenAbort => {
12021                    "BUFFER_EXHAUSTED_STALL_THEN_ABORT"
12022                }
12023                Self::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
12024            }
12025        }
12026        /// Creates an enum from field names used in the ProtoBuf definition.
12027        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12028            match value {
12029                "BUFFER_EXHAUSTED_UNSPECIFIED" => Some(Self::BufferExhaustedUnspecified),
12030                "BUFFER_EXHAUSTED_DROP" => Some(Self::BufferExhaustedDrop),
12031                "BUFFER_EXHAUSTED_STALL_THEN_ABORT" => {
12032                    Some(Self::BufferExhaustedStallThenAbort)
12033                }
12034                "BUFFER_EXHAUSTED_STALL_THEN_DROP" => {
12035                    Some(Self::BufferExhaustedStallThenDrop)
12036                }
12037                _ => None,
12038            }
12039        }
12040    }
12041}
12042/// The overall config that is used when starting a new tracing session through
12043/// ProducerPort::StartTracing().
12044/// It contains the general config for the logging buffer(s) and the configs for
12045/// all the data source being enabled.
12046///
12047/// Next id: 47.
12048#[derive(Clone, PartialEq, ::prost::Message)]
12049pub struct TraceConfig {
12050    #[prost(message, repeated, tag = "1")]
12051    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
12052    #[prost(message, repeated, tag = "2")]
12053    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
12054    #[prost(message, optional, tag = "20")]
12055    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
12056    /// If specified, the trace will be stopped |duration_ms| after starting.
12057    /// This does *not* count the time the system is suspended, so we will run
12058    /// for duration_ms of system activity, not wall time.
12059    ///
12060    /// However in case of traces with triggers, see
12061    /// TriggerConfig.trigger_timeout_ms instead.
12062    #[prost(uint32, optional, tag = "3")]
12063    pub duration_ms: ::core::option::Option<u32>,
12064    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
12065    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
12066    /// Linux/Android, no-op on other platforms. This is used when dealing with
12067    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
12068    /// wall-time, making them more likely to hit device reboots (and hence loss).
12069    /// This option also changes consistently the semantic of
12070    /// TriggerConfig.stop_delay_ms.
12071    #[prost(bool, optional, tag = "36")]
12072    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
12073    /// This is set when --dropbox is passed to the Perfetto command line client
12074    /// and enables guardrails that limit resource usage for traces requested
12075    /// by statsd.
12076    #[prost(bool, optional, tag = "4")]
12077    pub enable_extra_guardrails: ::core::option::Option<bool>,
12078    /// Reject producers that are not running under the same UID as the tracing
12079    /// service.
12080    #[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
12081    pub lockdown_mode: ::core::option::Option<i32>,
12082    #[prost(message, repeated, tag = "6")]
12083    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
12084    /// Statsd-specific metadata.
12085    #[prost(message, optional, tag = "7")]
12086    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
12087    /// When true && |output_path| is empty, the EnableTracing() request must
12088    /// provide a file descriptor. The service will then periodically read packets
12089    /// out of the trace buffer and store it into the passed file.
12090    /// If |output_path| is not empty no fd should be passed, the service
12091    /// will create a new file and write into that (see comment below).
12092    #[prost(bool, optional, tag = "8")]
12093    pub write_into_file: ::core::option::Option<bool>,
12094    /// This must point to a non-existing file. If the file exists the service
12095    /// will NOT overwrite and will fail instead as a security precaution.
12096    /// On Android, when this is used with the system traced, the path must be
12097    /// within /data/misc/perfetto-traces/ or the trace will fail.
12098    /// This option has been introduced in Android R. Before R write_into_file
12099    /// can be used only with the "pass a file descriptor over IPC" mode.
12100    #[prost(string, optional, tag = "29")]
12101    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
12102    /// Optional. If non-zero tunes the write period. A min value of 100ms is
12103    /// enforced (i.e. smaller values are ignored).
12104    #[prost(uint32, optional, tag = "9")]
12105    pub file_write_period_ms: ::core::option::Option<u32>,
12106    /// Optional. When non zero the periodic write stops once at most X bytes
12107    /// have been written into the file. Tracing is disabled when this limit is
12108    /// reached, even if |duration_ms| has not been reached yet.
12109    #[prost(uint64, optional, tag = "10")]
12110    pub max_file_size_bytes: ::core::option::Option<u64>,
12111    #[prost(message, optional, tag = "11")]
12112    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
12113    /// When true, data sources are not started until an explicit call to
12114    /// StartTracing() on the consumer port. This is to support early
12115    /// initialization and fast trace triggering. This can be used only when the
12116    /// Consumer explicitly triggers the StartTracing() method.
12117    /// This should not be used in a remote trace config via statsd, doing so will
12118    /// result in a hung trace session.
12119    #[prost(bool, optional, tag = "12")]
12120    pub deferred_start: ::core::option::Option<bool>,
12121    /// When set, it periodically issues a Flush() to all data source, forcing them
12122    /// to commit their data into the tracing service. This can be used for
12123    /// quasi-real-time streaming mode and to guarantee some partial ordering of
12124    /// events in the trace in windows of X ms.
12125    ///
12126    /// Warning: Perfetto automatically handles periodic flushing so in most
12127    /// scenarios setting this field is not needed. High frequency flushing can
12128    /// significantly impact performance.
12129    #[prost(uint32, optional, tag = "13")]
12130    pub flush_period_ms: ::core::option::Option<u32>,
12131    /// Wait for this long for producers to acknowledge flush requests.
12132    /// Default 5s.
12133    #[prost(uint32, optional, tag = "14")]
12134    pub flush_timeout_ms: ::core::option::Option<u32>,
12135    /// Wait for this long for producers to acknowledge stop requests.
12136    /// Default 5s.
12137    #[prost(uint32, optional, tag = "23")]
12138    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
12139    /// Android-only. If set, sends an intent to the Traceur system app when the
12140    /// trace ends to notify it about the trace readiness.
12141    #[prost(bool, optional, tag = "16")]
12142    pub notify_traceur: ::core::option::Option<bool>,
12143    /// This field was introduced in Android S.
12144    /// Android-only. If set to a value > 0, marks the trace session as a candidate
12145    /// for being attached to a bugreport. This field effectively acts as a z-index
12146    /// for bugreports. When Android's dumpstate runs perfetto
12147    /// --save-for-bugreport, traced will pick the tracing session with the highest
12148    /// score (score <= 0 is ignored) and:
12149    /// On Android S, T:  will steal its contents, save the trace into
12150    ///      a known path and stop prematurely.
12151    /// On Android U+: will create a read-only snapshot and save that into a known
12152    ///      path, without stoppin the original tracing session.
12153    /// When this field is set the tracing session becomes eligible to be cloned
12154    /// by other UIDs.
12155    #[prost(int32, optional, tag = "30")]
12156    pub bugreport_score: ::core::option::Option<i32>,
12157    /// When set, defines name of the file that will be saved under
12158    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
12159    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
12160    /// starting from the highest `bugreport_score`.
12161    /// Introduced in v42 / Android V.
12162    #[prost(string, optional, tag = "38")]
12163    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
12164    #[prost(message, optional, tag = "17")]
12165    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
12166    /// When this is non-empty the perfetto command line tool will ignore the rest
12167    /// of this TraceConfig and instead connect to the perfetto service as a
12168    /// producer and send these triggers, potentially stopping or starting traces
12169    /// that were previous configured to use a TriggerConfig.
12170    #[prost(string, repeated, tag = "18")]
12171    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12172    #[prost(message, optional, tag = "21")]
12173    pub incremental_state_config: ::core::option::Option<
12174        trace_config::IncrementalStateConfig,
12175    >,
12176    /// No longer needed as we unconditionally allow tracing on user builds.
12177    #[deprecated]
12178    #[prost(bool, optional, tag = "19")]
12179    pub allow_user_build_tracing: ::core::option::Option<bool>,
12180    /// If set the tracing service will ensure there is at most one tracing session
12181    /// with this key.
12182    #[prost(string, optional, tag = "22")]
12183    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
12184    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
12185    pub compression_type: ::core::option::Option<i32>,
12186    #[prost(message, optional, tag = "25")]
12187    pub incident_report_config: ::core::option::Option<
12188        trace_config::IncidentReportConfig,
12189    >,
12190    /// Android-only. Not for general use. If specified, sets the logging to statsd
12191    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
12192    /// this to enabled (if not explicitly set in the config) when specifying
12193    /// --upload.
12194    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
12195    pub statsd_logging: ::core::option::Option<i32>,
12196    /// An identifier clients can use to tie this trace to other logging.
12197    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
12198    /// Trace UUID. If this field is set, the tracing service will respect the
12199    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
12200    /// gap-less snapshotting is not used.
12201    #[deprecated]
12202    #[prost(int64, optional, tag = "27")]
12203    pub trace_uuid_msb: ::core::option::Option<i64>,
12204    #[deprecated]
12205    #[prost(int64, optional, tag = "28")]
12206    pub trace_uuid_lsb: ::core::option::Option<i64>,
12207    #[prost(message, optional, tag = "33")]
12208    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
12209    #[prost(message, optional, tag = "34")]
12210    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
12211    #[prost(message, optional, tag = "35")]
12212    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
12213    #[prost(message, repeated, tag = "39")]
12214    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
12215    /// Priority boost to be applied to the traced process, when the session is
12216    /// running.
12217    #[prost(message, optional, tag = "40")]
12218    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
12219    /// When set to a value > 0, this tracing session will be started in
12220    /// "exclusive mode". This has the following semantics:
12221    /// - It can only be set by shell or root users.
12222    /// - A new exclusive session will only be started if its priority is strictly
12223    ///    higher than any other active tracing session.
12224    /// - If a new exclusive session is started, all other existing tracing
12225    ///    sessions (exclusive or not) are aborted.
12226    /// - While an exclusive session is active, any new non-exclusive session (or
12227    ///    any exclusive session with a lower or equal priority) will be rejected.
12228    ///
12229    /// Introduced in: perfetto v52.
12230    /// Supported on: Android 25Q3+.
12231    #[prost(uint32, optional, tag = "41")]
12232    pub exclusive_prio: ::core::option::Option<u32>,
12233    /// Configures how the service should handle flushing data from producers
12234    /// before periodically writing the trace into the output file.
12235    /// Only applicable when |write_into_file| is true.
12236    ///
12237    /// By default, if |write_into_file| is set, the service periodically issues
12238    /// a Flush() to all data sources before writing buffers into the file.
12239    /// This ensures the file always contains the latest available data.
12240    ///
12241    /// Introduced in: perfetto v54.
12242    /// Supported on: Android 26Q1+.
12243    #[prost(enumeration = "trace_config::WriteFlushMode", optional, tag = "44")]
12244    pub write_flush_mode: ::core::option::Option<i32>,
12245    /// Whether to sync the output file to storage after each periodic write pass.
12246    /// Only applicable when |write_into_file| is true.
12247    ///
12248    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
12249    /// sync to storage on every write.
12250    ///
12251    /// Introduced in: perfetto v54.
12252    /// Supported on: Android 26Q1+.
12253    #[prost(enumeration = "trace_config::FFlushMode", optional, tag = "45")]
12254    pub fflush_post_write: ::core::option::Option<i32>,
12255    /// When true, data sources in remote producers (machines connected via
12256    /// traced_relay) will be matched by default. When false (the default), data
12257    /// sources only match the host machine. In either case, an explicit
12258    /// |DataSource.machine_name_filter| takes priority.
12259    ///
12260    /// NB: perfetto versions before v54 do not have this option and match across
12261    /// machines by default. To be compatible across this version boundary, either
12262    /// set this field to true, or set an explicit machine_name_filter on all data
12263    /// sources.
12264    ///
12265    /// Introduced in: perfetto v54.
12266    #[prost(bool, optional, tag = "43")]
12267    pub trace_all_machines: ::core::option::Option<bool>,
12268    #[prost(message, repeated, tag = "46")]
12269    pub notes: ::prost::alloc::vec::Vec<trace_config::Note>,
12270}
12271/// Nested message and enum types in `TraceConfig`.
12272pub mod trace_config {
12273    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12274    pub struct BufferConfig {
12275        #[prost(uint32, optional, tag = "1")]
12276        pub size_kb: ::core::option::Option<u32>,
12277        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
12278        pub fill_policy: ::core::option::Option<i32>,
12279        /// When true the buffer is moved (rather than copied) onto the cloned
12280        /// session, and an empty buffer of the same size is allocated in the source
12281        /// tracing session. This feature will likely get deprecated in the future.
12282        /// It been introduced mainly to support the surfaceflinger snapshot dump
12283        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
12284        /// that case we don't want to retain another in-memory copy of the buffer.
12285        #[prost(bool, optional, tag = "5")]
12286        pub transfer_on_clone: ::core::option::Option<bool>,
12287        /// Used in conjunction with transfer_on_clone. When true the buffer is
12288        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
12289        /// that if the data source took too long to write the data in a previous
12290        /// clone-related flush, we don't end up with a mixture of leftovers from
12291        /// the previous write and new data.
12292        #[prost(bool, optional, tag = "6")]
12293        pub clear_before_clone: ::core::option::Option<bool>,
12294        /// Optional name for this buffer. If set, data sources can reference this
12295        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
12296        /// using the buffer index. Buffer names must be unique within a tracing
12297        /// session. This provides a more human-readable and less error-prone way to
12298        /// configure which buffer a data source writes to.
12299        #[prost(string, optional, tag = "7")]
12300        pub name: ::core::option::Option<::prost::alloc::string::String>,
12301        #[prost(enumeration = "buffer_config::ExperimentalMode", optional, tag = "8")]
12302        pub experimental_mode: ::core::option::Option<i32>,
12303    }
12304    /// Nested message and enum types in `BufferConfig`.
12305    pub mod buffer_config {
12306        #[derive(
12307            Clone,
12308            Copy,
12309            Debug,
12310            PartialEq,
12311            Eq,
12312            Hash,
12313            PartialOrd,
12314            Ord,
12315            ::prost::Enumeration
12316        )]
12317        #[repr(i32)]
12318        pub enum FillPolicy {
12319            Unspecified = 0,
12320            /// Default behavior. The buffer operates as a conventional ring buffer.
12321            /// If the writer is faster than the reader (or if the reader reads only
12322            /// after tracing is stopped) newly written packets will overwrite old
12323            /// packets.
12324            RingBuffer = 1,
12325            /// Behaves like RING_BUFFER as long as there is space in the buffer or
12326            /// the reader catches up with the writer. As soon as the writer hits
12327            /// an unread chunk, it stops accepting new data in the buffer.
12328            Discard = 2,
12329        }
12330        impl FillPolicy {
12331            /// String value of the enum field names used in the ProtoBuf definition.
12332            ///
12333            /// The values are not transformed in any way and thus are considered stable
12334            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12335            pub fn as_str_name(&self) -> &'static str {
12336                match self {
12337                    Self::Unspecified => "UNSPECIFIED",
12338                    Self::RingBuffer => "RING_BUFFER",
12339                    Self::Discard => "DISCARD",
12340                }
12341            }
12342            /// Creates an enum from field names used in the ProtoBuf definition.
12343            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12344                match value {
12345                    "UNSPECIFIED" => Some(Self::Unspecified),
12346                    "RING_BUFFER" => Some(Self::RingBuffer),
12347                    "DISCARD" => Some(Self::Discard),
12348                    _ => None,
12349                }
12350            }
12351        }
12352        /// When true, uses the experimental TraceBufferV2 implementation for this
12353        /// buffer. This is for testing purposes only and may be removed in future
12354        /// versions.
12355        #[derive(
12356            Clone,
12357            Copy,
12358            Debug,
12359            PartialEq,
12360            Eq,
12361            Hash,
12362            PartialOrd,
12363            Ord,
12364            ::prost::Enumeration
12365        )]
12366        #[repr(i32)]
12367        pub enum ExperimentalMode {
12368            /// Use the default V1 implementation.
12369            ModeUnspecified = 0,
12370            /// Use TraceBufferV2.
12371            TraceBufferV2 = 1,
12372            /// Use both V1 and V2 in shadow mode. Data is written to both buffers,
12373            /// but only V1 data is returned. Comparison stats are reported to
12374            /// validate V2 returns equivalent data.
12375            TraceBufferV2ShadowMode = 2,
12376        }
12377        impl ExperimentalMode {
12378            /// String value of the enum field names used in the ProtoBuf definition.
12379            ///
12380            /// The values are not transformed in any way and thus are considered stable
12381            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12382            pub fn as_str_name(&self) -> &'static str {
12383                match self {
12384                    Self::ModeUnspecified => "MODE_UNSPECIFIED",
12385                    Self::TraceBufferV2 => "TRACE_BUFFER_V2",
12386                    Self::TraceBufferV2ShadowMode => "TRACE_BUFFER_V2_SHADOW_MODE",
12387                }
12388            }
12389            /// Creates an enum from field names used in the ProtoBuf definition.
12390            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12391                match value {
12392                    "MODE_UNSPECIFIED" => Some(Self::ModeUnspecified),
12393                    "TRACE_BUFFER_V2" => Some(Self::TraceBufferV2),
12394                    "TRACE_BUFFER_V2_SHADOW_MODE" => Some(Self::TraceBufferV2ShadowMode),
12395                    _ => None,
12396                }
12397            }
12398        }
12399    }
12400    #[derive(Clone, PartialEq, ::prost::Message)]
12401    pub struct DataSource {
12402        /// Filters and data-source specific config. It contains also the unique name
12403        /// of the data source, the one passed in the  DataSourceDescriptor when they
12404        /// register on the service.
12405        #[prost(message, optional, tag = "1")]
12406        pub config: ::core::option::Option<super::DataSourceConfig>,
12407        /// Optional. If multiple producers (~processes) expose the same data source
12408        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
12409        /// the data source is enabled only for producers whose names match any of
12410        /// the filters.
12411        /// |producer_name_filter| has to be an exact match, while
12412        /// |producer_name_regex_filter| is a regular expression.
12413        /// This allows to enable a data source only for specific processes.
12414        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
12415        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
12416        #[prost(string, repeated, tag = "2")]
12417        pub producer_name_filter: ::prost::alloc::vec::Vec<
12418            ::prost::alloc::string::String,
12419        >,
12420        #[prost(string, repeated, tag = "3")]
12421        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
12422            ::prost::alloc::string::String,
12423        >,
12424        /// Filter by machine names. The name of a machine is determined by the
12425        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
12426        /// variable is not set then the
12427        /// persist.traced_relay.machine_name system property is used. If the
12428        /// sysprop isn't set or not in an Android system, then the machine name by
12429        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
12430        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
12431        /// to the host machine, which is the machine running traced.
12432        #[prost(string, repeated, tag = "4")]
12433        pub machine_name_filter: ::prost::alloc::vec::Vec<
12434            ::prost::alloc::string::String,
12435        >,
12436    }
12437    /// Config for disabling builtin data sources in the tracing service.
12438    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12439    pub struct BuiltinDataSource {
12440        /// Disable emitting clock timestamps into the trace.
12441        #[prost(bool, optional, tag = "1")]
12442        pub disable_clock_snapshotting: ::core::option::Option<bool>,
12443        /// Disable echoing the original trace config in the trace.
12444        #[prost(bool, optional, tag = "2")]
12445        pub disable_trace_config: ::core::option::Option<bool>,
12446        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
12447        #[prost(bool, optional, tag = "3")]
12448        pub disable_system_info: ::core::option::Option<bool>,
12449        /// Disable emitting events for data-source state changes (e.g. the marker
12450        /// for all data sources having ACKed the start of the trace).
12451        #[prost(bool, optional, tag = "4")]
12452        pub disable_service_events: ::core::option::Option<bool>,
12453        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
12454        /// also ClockSnapshot's primary_trace_clock. The configured value is written
12455        /// into the trace as part of the ClockSnapshots emitted by the service.
12456        /// Trace processor will attempt to translate packet/event timestamps from
12457        /// various data sources (and their chosen clock domains) to this domain
12458        /// during import. Added in Android R.
12459        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
12460        pub primary_trace_clock: ::core::option::Option<i32>,
12461        /// Time interval in between snapshotting of sync markers, clock snapshots,
12462        /// stats, and other periodic service-emitted events. Note that the service
12463        /// only keeps track of the first and the most recent snapshot until
12464        /// ReadBuffers() is called.
12465        #[prost(uint32, optional, tag = "6")]
12466        pub snapshot_interval_ms: ::core::option::Option<u32>,
12467        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
12468        /// clock should be used for periodic snapshots of service-emitted events.
12469        /// This means, if a snapshot *should* have happened during suspend, it will
12470        /// happen immediately after the device resumes.
12471        ///
12472        /// Choosing a clock like this is done on best-effort basis; not all
12473        /// platforms (e.g. Windows) expose a clock which can be used for periodic
12474        /// tasks counting suspend. If such a clock is not available, the service
12475        /// falls back to the best-available alternative.
12476        ///
12477        /// Introduced in Android S.
12478        /// TODO(lalitm): deprecate this in T and make this the default if nothing
12479        /// crashes in S.
12480        #[prost(bool, optional, tag = "7")]
12481        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
12482        /// Disables the reporting of per-trace-writer histograms in TraceStats.
12483        #[prost(bool, optional, tag = "8")]
12484        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
12485        /// Disable emitting extension descriptors into the trace.
12486        #[prost(bool, optional, tag = "9")]
12487        pub disable_extension_descriptors: ::core::option::Option<bool>,
12488    }
12489    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12490    pub struct ProducerConfig {
12491        /// Identifies the producer for which this config is for.
12492        #[prost(string, optional, tag = "1")]
12493        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
12494        /// Specifies the preferred size of the shared memory buffer. If the size is
12495        /// larger than the max size, the max will be used. If it is smaller than
12496        /// the page size or doesn't fit pages evenly into it, it will fall back to
12497        /// the size specified by the producer or finally the default shared memory
12498        /// size.
12499        #[prost(uint32, optional, tag = "2")]
12500        pub shm_size_kb: ::core::option::Option<u32>,
12501        /// Specifies the preferred size of each page in the shared memory buffer.
12502        /// Must be an integer multiple of 4K.
12503        #[prost(uint32, optional, tag = "3")]
12504        pub page_size_kb: ::core::option::Option<u32>,
12505    }
12506    /// Contains statsd-specific metadata about an alert associated with the trace.
12507    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12508    pub struct StatsdMetadata {
12509        /// The identifier of the alert which triggered this trace.
12510        #[prost(int64, optional, tag = "1")]
12511        pub triggering_alert_id: ::core::option::Option<i64>,
12512        /// The uid which registered the triggering configuration with statsd.
12513        #[prost(int32, optional, tag = "2")]
12514        pub triggering_config_uid: ::core::option::Option<i32>,
12515        /// The identifier of the config which triggered the alert.
12516        #[prost(int64, optional, tag = "3")]
12517        pub triggering_config_id: ::core::option::Option<i64>,
12518        /// The identifier of the subscription which triggered this trace.
12519        #[prost(int64, optional, tag = "4")]
12520        pub triggering_subscription_id: ::core::option::Option<i64>,
12521    }
12522    /// Contains flags which override the default values of the guardrails inside
12523    /// Perfetto.
12524    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12525    pub struct GuardrailOverrides {
12526        /// Override the default limit (in bytes) for uploading data to server within
12527        /// a 24 hour period.
12528        /// On R-, this override only affected userdebug builds. Since S, it also
12529        /// affects user builds.
12530        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
12531        /// was removed from Perfetto.
12532        #[deprecated]
12533        #[prost(uint64, optional, tag = "1")]
12534        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
12535        /// Overrides the guardrail for maximum trace buffer size.
12536        /// Available on U+
12537        #[prost(uint32, optional, tag = "2")]
12538        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
12539    }
12540    /// Triggers allow producers to start or stop the tracing session when an event
12541    /// occurs.
12542    ///
12543    /// For example if we are tracing probabilistically, most traces will be
12544    /// uninteresting. Triggers allow us to keep only the interesting ones such as
12545    /// those traces during which the device temperature reached a certain
12546    /// threshold. In this case the producer can activate a trigger to keep
12547    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
12548    /// (START_TRACING) because it knows something is about to happen.
12549    #[derive(Clone, PartialEq, ::prost::Message)]
12550    pub struct TriggerConfig {
12551        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
12552        pub trigger_mode: ::core::option::Option<i32>,
12553        /// This flag is really a workaround for b/274931668. This is needed only
12554        /// when deploying configs to different versions of the tracing service.
12555        /// When this is set to true this has the same effect of setting trigger_mode
12556        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
12557        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
12558        /// versions of Android and fall back to STOP_TRACING on older versions where
12559        /// CLONE_SNAPSHOT did not exist.
12560        /// When using this flag, trigger_mode must be set to STOP_TRACING.
12561        #[prost(bool, optional, tag = "5")]
12562        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
12563        /// A list of triggers which are related to this configuration. If ANY
12564        /// trigger is seen then an action will be performed based on |trigger_mode|.
12565        #[prost(message, repeated, tag = "2")]
12566        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
12567        /// Required and must be positive if a TriggerConfig is specified. This is
12568        /// how long this TraceConfig should wait for a trigger to arrive. After this
12569        /// period of time if no trigger is seen the TracingSession will be cleaned
12570        /// up.
12571        #[prost(uint32, optional, tag = "3")]
12572        pub trigger_timeout_ms: ::core::option::Option<u32>,
12573    }
12574    /// Nested message and enum types in `TriggerConfig`.
12575    pub mod trigger_config {
12576        #[derive(Clone, PartialEq, ::prost::Message)]
12577        pub struct Trigger {
12578            /// The producer must specify this name to activate the trigger.
12579            #[prost(string, optional, tag = "1")]
12580            pub name: ::core::option::Option<::prost::alloc::string::String>,
12581            /// An std::regex that will match the producer that can activate this
12582            /// trigger. This is optional. If unset any producers can activate this
12583            /// trigger.
12584            #[prost(string, optional, tag = "2")]
12585            pub producer_name_regex: ::core::option::Option<
12586                ::prost::alloc::string::String,
12587            >,
12588            /// After a trigger is received either in START_TRACING or STOP_TRACING
12589            /// mode then the trace will end |stop_delay_ms| after triggering.
12590            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
12591            /// snapshot.
12592            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
12593            /// based on wall-clock, counting also time in suspend.
12594            #[prost(uint32, optional, tag = "3")]
12595            pub stop_delay_ms: ::core::option::Option<u32>,
12596            /// Limits the number of traces this trigger can start/stop in a rolling
12597            /// 24 hour window. If this field is unset or zero, no limit is applied and
12598            /// activiation of this trigger *always* starts/stops the trace.
12599            #[prost(uint32, optional, tag = "4")]
12600            pub max_per_24_h: ::core::option::Option<u32>,
12601            /// A value between 0 and 1 which encodes the probability of skipping a
12602            /// trigger with this name. This is useful for reducing the probability
12603            /// of high-frequency triggers from dominating trace finaization. If this
12604            /// field is unset or zero, the trigger will *never* be skipped. If this
12605            /// field is greater than or equal to 1, this trigger will *always* be
12606            /// skipped i.e. it will be as if this trigger was never included in the
12607            /// first place.
12608            /// This probability check is applied *before* any other limits. For
12609            /// example, if |max_per_24_h| is also set, first we will check if the
12610            /// probability bar is met and only then will we check the |max_per_24_h|
12611            /// limit.
12612            #[prost(double, optional, tag = "5")]
12613            pub skip_probability: ::core::option::Option<f64>,
12614        }
12615        #[derive(
12616            Clone,
12617            Copy,
12618            Debug,
12619            PartialEq,
12620            Eq,
12621            Hash,
12622            PartialOrd,
12623            Ord,
12624            ::prost::Enumeration
12625        )]
12626        #[repr(i32)]
12627        pub enum TriggerMode {
12628            Unspecified = 0,
12629            /// When this mode is chosen, data sources are not started until one of the
12630            /// |triggers| are received. This supports early initialization and fast
12631            /// starting of the tracing system. On triggering, the session will then
12632            /// record for |stop_delay_ms|. However if no trigger is seen
12633            /// after |trigger_timeout_ms| the session will be stopped and no data will
12634            /// be returned.
12635            StartTracing = 1,
12636            /// When this mode is chosen, the session will be started via the normal
12637            /// EnableTracing() & StartTracing(). If no trigger is ever seen
12638            /// the session will be stopped after |trigger_timeout_ms| and no data will
12639            /// be returned. However if triggered the trace will stop after
12640            /// |stop_delay_ms| and any data in the buffer will be returned to the
12641            /// consumer.
12642            StopTracing = 2,
12643            /// When this mode is chosen, this causes a snapshot of the current tracing
12644            /// session to be created after |stop_delay_ms| while the current tracing
12645            /// session continues undisturbed (% an extra flush). This mode can be
12646            /// used only when the tracing session is handled by the "perfetto" cmdline
12647            /// client (which is true in 90% of cases). Part of the business logic
12648            /// necessary for this behavior, and ensuing file handling, lives in
12649            /// perfetto_cmd.cc . On other consumers, this causes only a notification
12650            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
12651            /// consumer is supposed to call CloneSession() itself after the event.
12652            /// Use use_clone_snapshot_if_available=true when targeting older versions
12653            /// of perfetto.
12654            CloneSnapshot = 4,
12655        }
12656        impl TriggerMode {
12657            /// String value of the enum field names used in the ProtoBuf definition.
12658            ///
12659            /// The values are not transformed in any way and thus are considered stable
12660            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12661            pub fn as_str_name(&self) -> &'static str {
12662                match self {
12663                    Self::Unspecified => "UNSPECIFIED",
12664                    Self::StartTracing => "START_TRACING",
12665                    Self::StopTracing => "STOP_TRACING",
12666                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
12667                }
12668            }
12669            /// Creates an enum from field names used in the ProtoBuf definition.
12670            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12671                match value {
12672                    "UNSPECIFIED" => Some(Self::Unspecified),
12673                    "START_TRACING" => Some(Self::StartTracing),
12674                    "STOP_TRACING" => Some(Self::StopTracing),
12675                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
12676                    _ => None,
12677                }
12678            }
12679        }
12680    }
12681    /// Configuration for trace contents that reference earlier trace data. For
12682    /// example, a data source might intern strings, and emit packets containing
12683    /// {interned id : string} pairs. Future packets from that data source can then
12684    /// use the interned ids instead of duplicating the raw string contents. The
12685    /// trace parser will then need to use that interning table to fully interpret
12686    /// the rest of the trace.
12687    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12688    pub struct IncrementalStateConfig {
12689        /// If nonzero, notify eligible data sources to clear their incremental state
12690        /// periodically, with the given period. The notification is sent only to
12691        /// data sources that have |handles_incremental_state_clear| set in their
12692        /// DataSourceDescriptor. The notification requests that the data source
12693        /// stops referring to past trace contents. This is particularly useful when
12694        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
12695        /// trace data.
12696        ///
12697        /// Warning: this time-based global clearing is likely to be removed in the
12698        /// future, to be replaced with a smarter way of sending the notifications
12699        /// only when necessary.
12700        #[prost(uint32, optional, tag = "1")]
12701        pub clear_period_ms: ::core::option::Option<u32>,
12702    }
12703    /// Android-only. Not for general use. If set, saves the trace into an
12704    /// incident. This field is read by perfetto_cmd, rather than the tracing
12705    /// service. This field must be set when passing the --upload flag to
12706    /// perfetto_cmd.
12707    ///
12708    /// In this message, either:
12709    ///   * all of |destination_package|, |destination_class| and |privacy_level|
12710    ///     must be set.
12711    ///   * |skip_incidentd| must be explicitly set to true.
12712    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12713    pub struct IncidentReportConfig {
12714        #[prost(string, optional, tag = "1")]
12715        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
12716        #[prost(string, optional, tag = "2")]
12717        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
12718        /// Level of filtering in the requested incident. See |Destination| in
12719        /// frameworks/base/core/proto/android/privacy.proto.
12720        #[prost(int32, optional, tag = "3")]
12721        pub privacy_level: ::core::option::Option<i32>,
12722        /// If true, then skips saving the trace to incidentd.
12723        ///
12724        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
12725        /// or when we explicitly don't want traces to go to incidentd even when they
12726        /// usually would (e.g. configs deployed using statsd but only used for
12727        /// inclusion in bugreports using |bugreport_score|).
12728        ///
12729        /// The motivation for having this flag, instead of just not setting
12730        /// |incident_report_config|, is prevent accidents where
12731        /// |incident_report_config| is omitted by mistake.
12732        #[prost(bool, optional, tag = "5")]
12733        pub skip_incidentd: ::core::option::Option<bool>,
12734        /// If true, do not write the trace into dropbox (i.e. incident only).
12735        /// Otherwise, write to both dropbox and incident.
12736        /// TODO(lalitm): remove this field as we no longer use Dropbox.
12737        #[deprecated]
12738        #[prost(bool, optional, tag = "4")]
12739        pub skip_dropbox: ::core::option::Option<bool>,
12740    }
12741    /// When set applies a post-filter to the trace contents using the filter
12742    /// provided. The filter is applied at ReadBuffers() time and works both in the
12743    /// case of IPC readback and write_into_file. This filter can be generated
12744    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
12745    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
12746    /// design.
12747    ///
12748    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
12749    /// Android T with a different field number. Updated in Android U with a new
12750    /// bytecode version which supports string filtering.
12751    ///
12752    /// =========================
12753    /// Filter bytecode.
12754    /// =========================
12755    #[derive(Clone, PartialEq, ::prost::Message)]
12756    pub struct TraceFilter {
12757        /// The bytecode as implemented in Android T.
12758        #[prost(bytes = "vec", optional, tag = "1")]
12759        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12760        /// The bytecode as implemented in Android U. Adds support for string
12761        /// filtering.
12762        #[prost(bytes = "vec", optional, tag = "2")]
12763        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12764        #[prost(message, optional, tag = "3")]
12765        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
12766        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
12767        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
12768        /// versions ignore this field; new versions apply it.
12769        ///
12770        /// The motivation for this is that adding new opcodes in a backwards
12771        /// compatible way while also minimizing config size is hard. Instead, the
12772        /// overlay mechanism allows us to "patch" specific fields in the original
12773        /// bytecode_v2 with new semantics.
12774        ///
12775        /// See RFC 0011-subset-string-filter-rules.md for more info.
12776        ///
12777        /// Note:
12778        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
12779        /// markers), this overlay uses a triplet format with explicit indices:
12780        ///    \[msg_index, field_id << 3 | opcode, argument\] ... \[checksum\]
12781        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
12782        /// Entries must be sorted by (msg_index, field_id).
12783        ///
12784        /// The parser processes bytecode_v2 and this overlay simultaneously:
12785        ///   - any field not mentioned in the overlay is parsed as usual
12786        ///   - any field in the overlay but *not* in the bytecode_v2 is added
12787        ///     with its overlay value
12788        ///   - any field in both the overlay and bytecode_v2 takes the value in the
12789        ///     overlay, the bytecode_v2 value is ignored.
12790        ///
12791        /// Note: despite the name, this was broken in v54 (the overlay was not
12792        /// passed through to the bytecode parser). Only works in v55+.
12793        #[prost(bytes = "vec", optional, tag = "4")]
12794        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12795        /// String filter chain for Perfetto v54+. Rules in this chain either
12796        /// overwrite rules in string_filter_chain (if the name matches) or are
12797        /// appended (if the name doesn't match). This allows modifying existing
12798        /// rules (e.g., changing policy) without duplicating the entire chain.
12799        /// Rules without a name are always appended.
12800        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
12801        /// Introduced in: Perfetto v54.
12802        #[prost(message, optional, tag = "5")]
12803        pub string_filter_chain_v54: ::core::option::Option<
12804            trace_filter::StringFilterChain,
12805        >,
12806    }
12807    /// Nested message and enum types in `TraceFilter`.
12808    pub mod trace_filter {
12809        /// A rule specifies how strings should be filtered.
12810        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12811        pub struct StringFilterRule {
12812            /// The policy (i.e. algorithm) dictating how strings matching this rule
12813            /// should be handled.
12814            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
12815            pub policy: ::core::option::Option<i32>,
12816            /// The regex pattern used to match against each string.
12817            #[prost(string, optional, tag = "2")]
12818            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
12819            /// The string which should appear after the tgid in atrace tracepoint
12820            /// strings.
12821            #[prost(string, optional, tag = "3")]
12822            pub atrace_payload_starts_with: ::core::option::Option<
12823                ::prost::alloc::string::String,
12824            >,
12825            /// Optional name for the rule. When merging chains (e.g. via
12826            /// string_filter_chain_v54), rules with matching names in the newer chain
12827            /// will overwrite rules in the base chain. Rules without a name (empty or
12828            /// unset) are always treated as distinct and will be appended.
12829            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
12830            /// Introduced in: Perfetto v54.
12831            #[prost(string, optional, tag = "4")]
12832            pub name: ::core::option::Option<::prost::alloc::string::String>,
12833            /// The semantic types this rule applies to.
12834            ///
12835            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
12836            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
12837            /// - If non-empty, the rule applies only to fields whose semantic type
12838            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
12839            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
12840            ///
12841            /// Examples:
12842            ///    semantic_type: \[\]           -> matches only UNSPECIFIED fields
12843            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
12844            ///    semantic_type: \[UNSPECIFIED, ATRACE\] -> matches both
12845            ///
12846            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
12847            /// Introduced in: Perfetto v54.
12848            #[prost(
12849                enumeration = "super::super::SemanticType",
12850                repeated,
12851                packed = "false",
12852                tag = "5"
12853            )]
12854            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
12855        }
12856        /// A chain is a list of rules which string will be sequentially checked
12857        /// against.
12858        #[derive(Clone, PartialEq, ::prost::Message)]
12859        pub struct StringFilterChain {
12860            #[prost(message, repeated, tag = "1")]
12861            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
12862        }
12863        /// A policy specifies which algorithm should be used for filtering the
12864        /// string.
12865        #[derive(
12866            Clone,
12867            Copy,
12868            Debug,
12869            PartialEq,
12870            Eq,
12871            Hash,
12872            PartialOrd,
12873            Ord,
12874            ::prost::Enumeration
12875        )]
12876        #[repr(i32)]
12877        pub enum StringFilterPolicy {
12878            SfpUnspecified = 0,
12879            /// Tries to match the string field against |regex_pattern|. If it
12880            /// matches, all matching groups are "redacted" (i.e. replaced with a
12881            /// constant string) and filtering is terminated (i.e. no further rules are
12882            /// checked). If it doesn't match, the string is left unchanged and the
12883            /// next rule in chain is considered.
12884            SfpMatchRedactGroups = 1,
12885            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
12886            /// checking the regex. Specifically, it tries to parse the string field as
12887            /// an atrace tracepoint and checks if the post-tgid field starts with
12888            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
12889            /// this check succeeds.
12890            SfpAtraceMatchRedactGroups = 2,
12891            /// Tries to match the string field against |regex_pattern|. If it
12892            /// matches, filtering is terminated (i.e. no further rules are checked).
12893            /// If it doesn't match, the string is left unchanged and the next rule in
12894            /// chain is considered.
12895            SfpMatchBreak = 3,
12896            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
12897            /// the regex. Specifically, it tries to parse the string field as an
12898            /// atrace tracepoint and checks if the post-tgid field starts with
12899            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
12900            /// this check succeeds.
12901            SfpAtraceMatchBreak = 4,
12902            /// Tries to repeatedly search (i.e. find substrings of) the string field
12903            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
12904            /// replaced with a constant string). Once there are no further matches,
12905            /// filtering is terminated (i.e. no further rules are checked).
12906            ///
12907            /// Note that this is policy is a "search" policy not a "match" policy
12908            /// unlike the above policies:
12909            ///   * Match policies require matching the full string i.e. there is an
12910            ///     implicit leading `^` and trailing `$`.
12911            ///   * Search policies perform repeated partial matching of the string
12912            ///     e.g.
12913            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
12914            ///       - Pattern: `foo=(\d+)`
12915            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
12916            ///     where P6O is the redaction string
12917            ///
12918            /// All of this is only performed after some pre-work where we try to parse
12919            /// the string field as an atrace tracepoint and check if the post-tgid
12920            /// field starts with |atrace_post_tgid_starts_with|.
12921            ///
12922            /// If there are no partial matches, the string is left unchanged and the
12923            /// next rule in chain is considered.
12924            SfpAtraceRepeatedSearchRedactGroups = 5,
12925        }
12926        impl StringFilterPolicy {
12927            /// String value of the enum field names used in the ProtoBuf definition.
12928            ///
12929            /// The values are not transformed in any way and thus are considered stable
12930            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12931            pub fn as_str_name(&self) -> &'static str {
12932                match self {
12933                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
12934                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
12935                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
12936                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
12937                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
12938                    Self::SfpAtraceRepeatedSearchRedactGroups => {
12939                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
12940                    }
12941                }
12942            }
12943            /// Creates an enum from field names used in the ProtoBuf definition.
12944            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12945                match value {
12946                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
12947                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
12948                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => {
12949                        Some(Self::SfpAtraceMatchRedactGroups)
12950                    }
12951                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
12952                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
12953                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
12954                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
12955                    }
12956                    _ => None,
12957                }
12958            }
12959        }
12960    }
12961    /// Android-only. Not for general use. If set, reports the trace to the
12962    /// Android framework. This field is read by perfetto_cmd, rather than the
12963    /// tracing service. This field must be set when passing the --upload flag to
12964    /// perfetto_cmd.
12965    ///
12966    /// In this message, either:
12967    ///   * |reporter_service_package| and |reporter_service_class| must be set.
12968    ///   * |skip_reporting| must be explicitly set to true.
12969    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12970    pub struct AndroidReportConfig {
12971        #[prost(string, optional, tag = "1")]
12972        pub reporter_service_package: ::core::option::Option<
12973            ::prost::alloc::string::String,
12974        >,
12975        #[prost(string, optional, tag = "2")]
12976        pub reporter_service_class: ::core::option::Option<
12977            ::prost::alloc::string::String,
12978        >,
12979        /// If true, then skips reporting the trace to Android framework.
12980        ///
12981        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
12982        /// or when we explicitly don't want to report traces to the framework even
12983        /// when they usually would (e.g. configs deployed using statsd but only
12984        /// used for inclusion in bugreports using |bugreport_score|).
12985        ///
12986        /// The motivation for having this flag, instead of just not setting
12987        /// |framework_report_config|, is prevent accidents where
12988        /// |framework_report_config| is omitted by mistake.
12989        #[prost(bool, optional, tag = "3")]
12990        pub skip_report: ::core::option::Option<bool>,
12991        /// If true, will direct the Android framework to read the data in trace
12992        /// file and pass it to the reporter class over a pipe instead of passing
12993        /// the file descriptor directly.
12994        ///
12995        /// This flag is needed because the Android test framework does not
12996        /// currently support priv-app helper apps (in terms of SELinux) and we
12997        /// really don't want to add an allow rule for untrusted_app to receive
12998        /// trace fds.
12999        ///
13000        /// Because of this, we instead will direct the framework to create a new
13001        /// pipe and pass this to the reporter process instead. As the pipe is
13002        /// created by the framework, we won't have any problems with SELinux
13003        /// (system_server is already allowed to pass pipe fds, even
13004        /// to untrusted apps).
13005        ///
13006        /// As the name suggests this option *MUST* only be used for testing.
13007        /// Note that the framework will reject (and drop) files which are too
13008        /// large both for simplicity and to be minimize the amount of data we
13009        /// pass to a non-priv app (note that the framework will still check
13010        /// manifest permissions even though SELinux permissions are worked around).
13011        #[prost(bool, optional, tag = "4")]
13012        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
13013    }
13014    /// If set, delays the start of tracing by a random duration. The duration is
13015    /// chosen from a uniform distribution between the specified minimum and
13016    /// maximum.
13017    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
13018    /// not work if you communicate with traced directly over the consumer API.
13019    /// Introduced in Android T.
13020    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13021    pub struct CmdTraceStartDelay {
13022        #[prost(uint32, optional, tag = "1")]
13023        pub min_delay_ms: ::core::option::Option<u32>,
13024        #[prost(uint32, optional, tag = "2")]
13025        pub max_delay_ms: ::core::option::Option<u32>,
13026    }
13027    /// When non-empty, ensures that for a each semaphore named `name at most
13028    /// `max_other_session_count`` *other* sessions (whose value is taken of the
13029    /// minimum of all values specified by this config or any already-running
13030    /// session) can be be running.
13031    ///
13032    /// If a semaphore "acquisition" fails, EnableTracing will return an error
13033    /// and the tracing session will not be started (or elgible to start in
13034    /// the case of deferred sessions).
13035    ///
13036    /// This is easiest to explain with an example. Suppose the tracing service has
13037    /// the following active tracing sessions:
13038    ///    S1 = [{name=foo, max_other_session_count=2},
13039    ///          {name=bar, max_other_session_count=0}]
13040    ///    S2 = [{name=foo, max_other_session_count=1},
13041    ///          {name=baz, max_other_session_count=1}]
13042    ///
13043    /// Then, for a new session, the following would be the expected behaviour of
13044    /// EnableSession given the state of `session_semaphores`.
13045    ///    Q: session_semaphores = \[\]
13046    ///    A: Allowed because it does not specify any semaphores. Will be allowed
13047    ///       no matter the state of any other tracing session.
13048    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
13049    ///    A: Allowed because both S2 and this config specify
13050    ///       max_other_session_count=1 for baz.
13051    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
13052    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
13053    ///       takes that slot.
13054    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
13055    ///    A: Denied because S1 takes the the slot specified by both S1 and
13056    ///       this config.
13057    ///
13058    /// Introduced in 24Q3 (Android V).
13059    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13060    pub struct SessionSemaphore {
13061        /// The name of the semaphore. Acts as a unique identifier across all
13062        /// tracing sessions (including the one being started).
13063        #[prost(string, optional, tag = "1")]
13064        pub name: ::core::option::Option<::prost::alloc::string::String>,
13065        /// The maximum number of *other* sesssions which specify the same semaphore
13066        /// which can be active. The minimum of this value across all tracing
13067        /// sessions and the value specified by the config is used when deciding
13068        /// whether the tracing session can be started.
13069        #[prost(uint64, optional, tag = "2")]
13070        pub max_other_session_count: ::core::option::Option<u64>,
13071    }
13072    /// Allow key, value pairs to save arbitrary data about trace.
13073    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13074    pub struct Note {
13075        /// Required.
13076        #[prost(string, optional, tag = "1")]
13077        pub key: ::core::option::Option<::prost::alloc::string::String>,
13078        /// Required.
13079        #[prost(string, optional, tag = "2")]
13080        pub value: ::core::option::Option<::prost::alloc::string::String>,
13081    }
13082    #[derive(
13083        Clone,
13084        Copy,
13085        Debug,
13086        PartialEq,
13087        Eq,
13088        Hash,
13089        PartialOrd,
13090        Ord,
13091        ::prost::Enumeration
13092    )]
13093    #[repr(i32)]
13094    pub enum LockdownModeOperation {
13095        LockdownUnchanged = 0,
13096        LockdownClear = 1,
13097        LockdownSet = 2,
13098    }
13099    impl LockdownModeOperation {
13100        /// String value of the enum field names used in the ProtoBuf definition.
13101        ///
13102        /// The values are not transformed in any way and thus are considered stable
13103        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13104        pub fn as_str_name(&self) -> &'static str {
13105            match self {
13106                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
13107                Self::LockdownClear => "LOCKDOWN_CLEAR",
13108                Self::LockdownSet => "LOCKDOWN_SET",
13109            }
13110        }
13111        /// Creates an enum from field names used in the ProtoBuf definition.
13112        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13113            match value {
13114                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
13115                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
13116                "LOCKDOWN_SET" => Some(Self::LockdownSet),
13117                _ => None,
13118            }
13119        }
13120    }
13121    /// Compress trace with the given method. Best effort.
13122    #[derive(
13123        Clone,
13124        Copy,
13125        Debug,
13126        PartialEq,
13127        Eq,
13128        Hash,
13129        PartialOrd,
13130        Ord,
13131        ::prost::Enumeration
13132    )]
13133    #[repr(i32)]
13134    pub enum CompressionType {
13135        Unspecified = 0,
13136        Deflate = 1,
13137    }
13138    impl CompressionType {
13139        /// String value of the enum field names used in the ProtoBuf definition.
13140        ///
13141        /// The values are not transformed in any way and thus are considered stable
13142        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13143        pub fn as_str_name(&self) -> &'static str {
13144            match self {
13145                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
13146                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
13147            }
13148        }
13149        /// Creates an enum from field names used in the ProtoBuf definition.
13150        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13151            match value {
13152                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
13153                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
13154                _ => None,
13155            }
13156        }
13157    }
13158    #[derive(
13159        Clone,
13160        Copy,
13161        Debug,
13162        PartialEq,
13163        Eq,
13164        Hash,
13165        PartialOrd,
13166        Ord,
13167        ::prost::Enumeration
13168    )]
13169    #[repr(i32)]
13170    pub enum StatsdLogging {
13171        Unspecified = 0,
13172        Enabled = 1,
13173        Disabled = 2,
13174    }
13175    impl StatsdLogging {
13176        /// String value of the enum field names used in the ProtoBuf definition.
13177        ///
13178        /// The values are not transformed in any way and thus are considered stable
13179        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13180        pub fn as_str_name(&self) -> &'static str {
13181            match self {
13182                Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
13183                Self::Enabled => "STATSD_LOGGING_ENABLED",
13184                Self::Disabled => "STATSD_LOGGING_DISABLED",
13185            }
13186        }
13187        /// Creates an enum from field names used in the ProtoBuf definition.
13188        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13189            match value {
13190                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
13191                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
13192                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
13193                _ => None,
13194            }
13195        }
13196    }
13197    #[derive(
13198        Clone,
13199        Copy,
13200        Debug,
13201        PartialEq,
13202        Eq,
13203        Hash,
13204        PartialOrd,
13205        Ord,
13206        ::prost::Enumeration
13207    )]
13208    #[repr(i32)]
13209    pub enum WriteFlushMode {
13210        /// Same as WRITE_FLUSH_AUTO.
13211        WriteFlushUnspecified = 0,
13212        /// Default mode. The service automatically determines the flush frequency
13213        /// to balance performance and data freshness:
13214        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
13215        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
13216        ///     issued every 5s.
13217        /// 2) If file_write_period_ms > 5s:
13218        ///     A flush is issued before every periodic write into the file.
13219        WriteFlushAuto = 1,
13220        /// Do not flush buffers before periodic writes into the file.
13221        /// Use this mode if you want to minimize the performance impact of flushes
13222        /// and can tolerate potentially missing the most recent data in the trace
13223        /// file until the end of the session or an explicit flush.
13224        /// When this mode is selected, |flush_period_ms| is respected.
13225        WriteFlushDisabled = 2,
13226        /// Issue a flush before every periodic write into the file.
13227        /// This ensures that each write into the file contains the most up-to-date
13228        /// data from all data sources, but may have a higher performance overhead.
13229        WriteFlushEnabled = 3,
13230    }
13231    impl WriteFlushMode {
13232        /// String value of the enum field names used in the ProtoBuf definition.
13233        ///
13234        /// The values are not transformed in any way and thus are considered stable
13235        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13236        pub fn as_str_name(&self) -> &'static str {
13237            match self {
13238                Self::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
13239                Self::WriteFlushAuto => "WRITE_FLUSH_AUTO",
13240                Self::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
13241                Self::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
13242            }
13243        }
13244        /// Creates an enum from field names used in the ProtoBuf definition.
13245        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13246            match value {
13247                "WRITE_FLUSH_UNSPECIFIED" => Some(Self::WriteFlushUnspecified),
13248                "WRITE_FLUSH_AUTO" => Some(Self::WriteFlushAuto),
13249                "WRITE_FLUSH_DISABLED" => Some(Self::WriteFlushDisabled),
13250                "WRITE_FLUSH_ENABLED" => Some(Self::WriteFlushEnabled),
13251                _ => None,
13252            }
13253        }
13254    }
13255    #[derive(
13256        Clone,
13257        Copy,
13258        Debug,
13259        PartialEq,
13260        Eq,
13261        Hash,
13262        PartialOrd,
13263        Ord,
13264        ::prost::Enumeration
13265    )]
13266    #[repr(i32)]
13267    pub enum FFlushMode {
13268        /// Default: same as FFLUSH_DISABLED.
13269        FflushUnspecified = 0,
13270        /// Do not explicitly sync the file to storage after each write pass.
13271        FflushDisabled = 1,
13272        /// Explicitly sync the file to storage (via fdatasync) after each periodic
13273        /// write pass. Increases data durability at the cost of higher disk I/O
13274        /// overhead.
13275        FflushEnabled = 2,
13276    }
13277    impl FFlushMode {
13278        /// String value of the enum field names used in the ProtoBuf definition.
13279        ///
13280        /// The values are not transformed in any way and thus are considered stable
13281        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13282        pub fn as_str_name(&self) -> &'static str {
13283            match self {
13284                Self::FflushUnspecified => "FFLUSH_UNSPECIFIED",
13285                Self::FflushDisabled => "FFLUSH_DISABLED",
13286                Self::FflushEnabled => "FFLUSH_ENABLED",
13287            }
13288        }
13289        /// Creates an enum from field names used in the ProtoBuf definition.
13290        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13291            match value {
13292                "FFLUSH_UNSPECIFIED" => Some(Self::FflushUnspecified),
13293                "FFLUSH_DISABLED" => Some(Self::FflushDisabled),
13294                "FFLUSH_ENABLED" => Some(Self::FflushEnabled),
13295                _ => None,
13296            }
13297        }
13298    }
13299}
13300/// Arguments for rpc EnableTracing().
13301#[derive(Clone, PartialEq, ::prost::Message)]
13302pub struct EnableTracingRequest {
13303    #[prost(message, optional, tag = "1")]
13304    pub trace_config: ::core::option::Option<TraceConfig>,
13305    /// Introduced in Android Q. This is used for re-attaching to the end-of-trace
13306    /// EnableTracingResponse notification after a Detach+Attach request.
13307    /// When this flag is set the |trace_config| is ignored and no method is called
13308    /// on the tracing service.
13309    #[prost(bool, optional, tag = "2")]
13310    pub attach_notification_only: ::core::option::Option<bool>,
13311}
13312#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13313pub struct EnableTracingResponse {
13314    /// If present and non-empty tracing was disabled because of an error.
13315    /// Introduced in Android S.
13316    #[prost(string, optional, tag = "3")]
13317    pub error: ::core::option::Option<::prost::alloc::string::String>,
13318    #[prost(oneof = "enable_tracing_response::State", tags = "1")]
13319    pub state: ::core::option::Option<enable_tracing_response::State>,
13320}
13321/// Nested message and enum types in `EnableTracingResponse`.
13322pub mod enable_tracing_response {
13323    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
13324    pub enum State {
13325        #[prost(bool, tag = "1")]
13326        Disabled(bool),
13327    }
13328}
13329/// Arguments for rpc StartTracing().
13330#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13331pub struct StartTracingRequest {}
13332#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13333pub struct StartTracingResponse {}
13334/// Arguments for rpc ChangeTraceConfig().
13335#[derive(Clone, PartialEq, ::prost::Message)]
13336pub struct ChangeTraceConfigRequest {
13337    #[prost(message, optional, tag = "1")]
13338    pub trace_config: ::core::option::Option<TraceConfig>,
13339}
13340#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13341pub struct ChangeTraceConfigResponse {}
13342/// Arguments for rpc DisableTracing().
13343///
13344/// TODO: not supported yet, selectively disable only some data sources.
13345/// repeated string data_source_name;
13346#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13347pub struct DisableTracingRequest {}
13348#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13349pub struct DisableTracingResponse {}
13350/// Arguments for rpc ReadBuffers().
13351///
13352/// The |id|s of the buffer, as passed to CreateBuffers().
13353/// TODO: repeated uint32 buffer_ids = 1;
13354#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13355pub struct ReadBuffersRequest {}
13356/// TODO: uint32 buffer_id = 1;
13357#[derive(Clone, PartialEq, ::prost::Message)]
13358pub struct ReadBuffersResponse {
13359    #[prost(message, repeated, tag = "2")]
13360    pub slices: ::prost::alloc::vec::Vec<read_buffers_response::Slice>,
13361}
13362/// Nested message and enum types in `ReadBuffersResponse`.
13363pub mod read_buffers_response {
13364    /// Each streaming reply returns one or more slices for one or more trace
13365    /// packets, or even just a portion of it (if it's too big to fit within one
13366    /// IPC). The returned slices are ordered and contiguous: packets' slices are
13367    /// not interleaved and slices are sent only once all slices for a packet are
13368    /// available (i.e. the consumer will never see any gap).
13369    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13370    pub struct Slice {
13371        #[prost(bytes = "vec", optional, tag = "1")]
13372        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13373        /// When true, this is the last slice for the packet. A ReadBufferResponse
13374        /// might have no slices marked as |last_slice_for_packet|==true, in the case
13375        /// of a very large packet that gets chunked into several IPCs (in which case
13376        /// only the last IPC for the packet will have this flag set).
13377        #[prost(bool, optional, tag = "2")]
13378        pub last_slice_for_packet: ::core::option::Option<bool>,
13379    }
13380}
13381/// Arguments for rpc FreeBuffers().
13382#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13383pub struct FreeBuffersRequest {
13384    /// The |id|s of the buffer, as passed to CreateBuffers().
13385    #[prost(uint32, repeated, packed = "false", tag = "1")]
13386    pub buffer_ids: ::prost::alloc::vec::Vec<u32>,
13387}
13388#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13389pub struct FreeBuffersResponse {}
13390/// Arguments for rpc Flush().
13391#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13392pub struct FlushRequest {
13393    #[prost(uint32, optional, tag = "1")]
13394    pub timeout_ms: ::core::option::Option<u32>,
13395    /// More details such as flush reason and originator. Introduced in v38 / V.
13396    /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
13397    #[prost(uint64, optional, tag = "2")]
13398    pub flags: ::core::option::Option<u64>,
13399}
13400#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13401pub struct FlushResponse {}
13402/// Arguments for rpc Detach
13403#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13404pub struct DetachRequest {
13405    #[prost(string, optional, tag = "1")]
13406    pub key: ::core::option::Option<::prost::alloc::string::String>,
13407}
13408#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13409pub struct DetachResponse {}
13410/// Arguments for rpc Attach.
13411#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13412pub struct AttachRequest {
13413    #[prost(string, optional, tag = "1")]
13414    pub key: ::core::option::Option<::prost::alloc::string::String>,
13415}
13416#[derive(Clone, PartialEq, ::prost::Message)]
13417pub struct AttachResponse {
13418    #[prost(message, optional, tag = "1")]
13419    pub trace_config: ::core::option::Option<TraceConfig>,
13420}
13421#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13422pub struct GetTraceStatsRequest {}
13423#[derive(Clone, PartialEq, ::prost::Message)]
13424pub struct GetTraceStatsResponse {
13425    #[prost(message, optional, tag = "1")]
13426    pub trace_stats: ::core::option::Option<TraceStats>,
13427}
13428/// To stop observing events of a certain type, send a request with the remaining
13429/// types. To stop observing completely, send an empty request.
13430#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13431pub struct ObserveEventsRequest {
13432    #[prost(
13433        enumeration = "observable_events::Type",
13434        repeated,
13435        packed = "false",
13436        tag = "1"
13437    )]
13438    pub events_to_observe: ::prost::alloc::vec::Vec<i32>,
13439}
13440#[derive(Clone, PartialEq, ::prost::Message)]
13441pub struct ObserveEventsResponse {
13442    #[prost(message, optional, tag = "1")]
13443    pub events: ::core::option::Option<ObservableEvents>,
13444}
13445/// Arguments for rpc QueryServiceState.
13446#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13447pub struct QueryServiceStateRequest {
13448    /// If set, only the TracingServiceState.tracing_sessions is filled. Producers
13449    /// and data sources are omitted.
13450    #[prost(bool, optional, tag = "1")]
13451    pub sessions_only: ::core::option::Option<bool>,
13452}
13453#[derive(Clone, PartialEq, ::prost::Message)]
13454pub struct QueryServiceStateResponse {
13455    /// In order to avoid hitting IPC message size limitations, the service will
13456    /// return >1 replies for each query, chunking the TracingServiceState. The
13457    /// receiver is expected to merge replies together and parse that when the
13458    /// last reply is received (i.e. when IPC's |has_more| == false).
13459    #[prost(message, optional, tag = "1")]
13460    pub service_state: ::core::option::Option<TracingServiceState>,
13461}
13462/// Arguments for rpc QueryCapabilities.
13463#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13464pub struct QueryCapabilitiesRequest {}
13465#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13466pub struct QueryCapabilitiesResponse {
13467    #[prost(message, optional, tag = "1")]
13468    pub capabilities: ::core::option::Option<TracingServiceCapabilities>,
13469}
13470/// Arguments for rpc SaveTraceForBugreport.
13471#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13472pub struct SaveTraceForBugreportRequest {}
13473/// This response is sent only after the trace was saved into file (if succeeded)
13474/// or something failed.
13475#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13476pub struct SaveTraceForBugreportResponse {
13477    /// If true, an eligible the trace was saved into a known location (on Android
13478    /// /data/misc/perfetto-traces, see GetBugreportTracePath()).
13479    /// If false no trace with bugreport_score > 0 was found or an error occurred.
13480    /// see |msg| in that case for details about the failure.
13481    #[prost(bool, optional, tag = "1")]
13482    pub success: ::core::option::Option<bool>,
13483    #[prost(string, optional, tag = "2")]
13484    pub msg: ::core::option::Option<::prost::alloc::string::String>,
13485}
13486/// Arguments for rpc CloneSession.
13487#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13488pub struct CloneSessionRequest {
13489    /// If set, the trace filter will not have effect on the cloned session.
13490    /// Used for bugreports.
13491    #[prost(bool, optional, tag = "2")]
13492    pub skip_trace_filter: ::core::option::Option<bool>,
13493    /// If set, affects the generation of the FlushFlags::CloneTarget to be set
13494    /// to kBugreport when requesting the flush to the producers.
13495    #[prost(bool, optional, tag = "3")]
13496    pub for_bugreport: ::core::option::Option<bool>,
13497    /// If set, this is stored in the trace as name of the trigger that caused the
13498    /// clone.
13499    #[prost(string, optional, tag = "5")]
13500    pub clone_trigger_name: ::core::option::Option<::prost::alloc::string::String>,
13501    /// If set, this is stored in the trace as name of the producer that triggered
13502    /// the clone.
13503    #[prost(string, optional, tag = "6")]
13504    pub clone_trigger_producer_name: ::core::option::Option<
13505        ::prost::alloc::string::String,
13506    >,
13507    /// If set, this is stored in the trace as uid of the producer that triggered
13508    /// the clone.
13509    #[prost(int32, optional, tag = "7")]
13510    pub clone_trigger_trusted_producer_uid: ::core::option::Option<i32>,
13511    /// If set, this is stored in the trace as timestamp of the trigger that caused
13512    /// the clone.
13513    #[prost(uint64, optional, tag = "8")]
13514    pub clone_trigger_boot_time_ns: ::core::option::Option<u64>,
13515    /// If set, this is stored in the trace as the configured delay of the trigger
13516    /// that caused the clone.
13517    ///
13518    /// Consumer may also send a file descriptor with this rpc message. If the
13519    /// descriptor is valid, and the session that should be cloned is
13520    /// 'write_into_file' session, traced writes the cloned session content to that
13521    /// file descriptor, instead of writing it in the cloned session buffers.
13522    #[prost(uint64, optional, tag = "9")]
13523    pub clone_trigger_delay_ms: ::core::option::Option<u64>,
13524    #[prost(oneof = "clone_session_request::Selector", tags = "1, 4")]
13525    pub selector: ::core::option::Option<clone_session_request::Selector>,
13526}
13527/// Nested message and enum types in `CloneSessionRequest`.
13528pub mod clone_session_request {
13529    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
13530    pub enum Selector {
13531        /// The session ID to clone. If session_id == kBugreportSessionId (0xff...ff)
13532        /// the session with the highest bugreport score is cloned (if any exists).
13533        #[prost(uint64, tag = "1")]
13534        SessionId(u64),
13535        /// The unique_session_name of the tracing session to clone. Tracing sessions
13536        /// that are clones of other tracing sessions are ignored.
13537        #[prost(string, tag = "4")]
13538        UniqueSessionName(::prost::alloc::string::String),
13539    }
13540}
13541#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13542pub struct CloneSessionResponse {
13543    /// If true, the clone was successful. If false it failed and |error| contains
13544    /// the details about the failure.
13545    #[prost(bool, optional, tag = "1")]
13546    pub success: ::core::option::Option<bool>,
13547    #[prost(string, optional, tag = "2")]
13548    pub error: ::core::option::Option<::prost::alloc::string::String>,
13549    /// The UUID of the cloned session.
13550    #[prost(int64, optional, tag = "3")]
13551    pub uuid_msb: ::core::option::Option<i64>,
13552    #[prost(int64, optional, tag = "4")]
13553    pub uuid_lsb: ::core::option::Option<i64>,
13554    /// TracingService sets this when the cloned session was write_into_file=true.
13555    /// The consumer cannot know upfront if a session is WIF or not.
13556    /// Introduced in v53.
13557    #[prost(bool, optional, tag = "5")]
13558    pub was_write_into_file: ::core::option::Option<bool>,
13559}
13560#[derive(Clone, PartialEq, ::prost::Message)]
13561pub struct CommitDataRequest {
13562    #[prost(message, repeated, tag = "1")]
13563    pub chunks_to_move: ::prost::alloc::vec::Vec<commit_data_request::ChunksToMove>,
13564    #[prost(message, repeated, tag = "2")]
13565    pub chunks_to_patch: ::prost::alloc::vec::Vec<commit_data_request::ChunkToPatch>,
13566    /// Optional. If this commit is made in response to a Flush(id) request coming
13567    /// from the service, copy back the id of the request so the service can tell
13568    /// when the flush happened.
13569    #[prost(uint64, optional, tag = "3")]
13570    pub flush_request_id: ::core::option::Option<u64>,
13571}
13572/// Nested message and enum types in `CommitDataRequest`.
13573pub mod commit_data_request {
13574    /// When |chunks_to_move| is present, the producer is requesting the service to
13575    /// move the given chunks form the share memory buffer into the central
13576    /// trace buffer(s).
13577    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13578    pub struct ChunksToMove {
13579        /// The 0-based index of the page in the Shared Memory Buffer.
13580        #[prost(uint32, optional, tag = "1")]
13581        pub page: ::core::option::Option<u32>,
13582        /// The 0-based chunk index \[0..13\] within the page.
13583        #[prost(uint32, optional, tag = "2")]
13584        pub chunk: ::core::option::Option<u32>,
13585        /// The target buffer it should be moved onto. The service will check that
13586        /// the producer is allowed to write into that buffer before the move.
13587        #[prost(uint32, optional, tag = "3")]
13588        pub target_buffer: ::core::option::Option<u32>,
13589        /// Sending the chunk data over the wire. Used for transports that don't
13590        /// support shared memory (e.g. vsock or TCP sockets). In the default case
13591        /// (tracing protocol over a Unix socket), this field is not used and tracing
13592        /// data is stored in the shmem buffer and referenced by the fields above.
13593        /// See |use_shemem_emulation| in the codebase for reference.
13594        #[prost(bytes = "vec", optional, tag = "4")]
13595        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13596        /// Set to true when scraping data in shmem emulation (aka commits-over-ipc)
13597        /// AND the chunk was still in kChunkBeingWritten. This is necessary because
13598        /// in emulation mode, the service cannot tell whether this is a complete
13599        /// chunk coming from a regular TraceWriter commit, or a scraped one.
13600        /// This field is only set when `data` is present. It is never set (and is
13601        /// ignored by the service) for the regular case of doing commits over
13602        /// shmem. Introduced in Perfetto v54.
13603        /// See /rfcs/0010-smb-scraping-remote-producers.md .
13604        #[prost(bool, optional, tag = "5")]
13605        pub chunk_incomplete: ::core::option::Option<bool>,
13606    }
13607    /// Used to patch chunks that have already been sent to the service. The chunk
13608    /// might not be in the shared memory buffer anymore as it could have been
13609    /// moved by the service in response to a prior CommitDataRequest.
13610    /// It is perfectly valid to patch a chunk that is being notified in the same
13611    /// message (a chunk can show up both in the |changed_pages| and |patches|
13612    /// field within the same CommitDataRequest message).
13613    /// In other words, |chunks_to_patch| is always processed after
13614    /// |chunks_to_move|.
13615    #[derive(Clone, PartialEq, ::prost::Message)]
13616    pub struct ChunkToPatch {
13617        #[prost(uint32, optional, tag = "1")]
13618        pub target_buffer: ::core::option::Option<u32>,
13619        /// {WriterID, ChunkID} uniquely identify a chunk for the current producer.
13620        #[prost(uint32, optional, tag = "2")]
13621        pub writer_id: ::core::option::Option<u32>,
13622        #[prost(uint32, optional, tag = "3")]
13623        pub chunk_id: ::core::option::Option<u32>,
13624        /// List of patches to apply to the given chunk.
13625        #[prost(message, repeated, tag = "4")]
13626        pub patches: ::prost::alloc::vec::Vec<chunk_to_patch::Patch>,
13627        /// When true more patches will follow in future requests and the chunk
13628        /// should be still considered as patch-pending. When false the chunk becomes
13629        /// eligible for reading.
13630        #[prost(bool, optional, tag = "5")]
13631        pub has_more_patches: ::core::option::Option<bool>,
13632    }
13633    /// Nested message and enum types in `ChunkToPatch`.
13634    pub mod chunk_to_patch {
13635        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13636        pub struct Patch {
13637            /// Offset in bytes from the start of the chunk payload. e.g., offset == 0
13638            /// corresponds to the first byte of the first packet (or fragment) in the
13639            /// chunk.
13640            #[prost(uint32, optional, tag = "1")]
13641            pub offset: ::core::option::Option<u32>,
13642            /// Bytes to patch at the given offset.
13643            #[prost(bytes = "vec", optional, tag = "2")]
13644            pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13645        }
13646    }
13647}
13648/// Arguments for rpc InitializeConnection().
13649#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13650pub struct InitializeConnectionRequest {
13651    /// Optional. Provides a hint to the tracing service about the suggested size
13652    /// of the shared memory buffer pages. The service is not required to respect
13653    /// this if it has already another value in the configuration or if the hint
13654    /// is unreasonably large. Must be an integer multiple of 4096. See tradeoff
13655    /// considerations in shared_memory_abi.h.
13656    #[prost(uint32, optional, tag = "1")]
13657    pub shared_memory_page_size_hint_bytes: ::core::option::Option<u32>,
13658    /// Optional. Provides a hint to the tracing service about the suggested size
13659    /// of the shared memory buffer. The service is not required to respect this
13660    /// and might return a smaller buffer.
13661    #[prost(uint32, optional, tag = "2")]
13662    pub shared_memory_size_hint_bytes: ::core::option::Option<u32>,
13663    /// Required to match the producer config set by the service to the correct
13664    /// producer.
13665    #[prost(string, optional, tag = "3")]
13666    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
13667    /// If provided, overrides the service's SMB scraping setting for the producer.
13668    #[prost(
13669        enumeration = "initialize_connection_request::ProducerSmbScrapingMode",
13670        optional,
13671        tag = "4"
13672    )]
13673    pub smb_scraping_mode: ::core::option::Option<i32>,
13674    /// Since Android R, this request can also transport an FD for the producer's
13675    /// shared memory buffer, if allocated by the producer (e.g. for startup
13676    /// tracing). In this case, |shared_memory_page_size_hint_bytes| is a required
13677    /// field, and describes the SMB's page size. Note that the service may not
13678    /// accept this SMB (e.g. because it is too old or its size / page size are
13679    /// invalid) and instead allocate a new SMB which is provided in the
13680    /// SetupTracing response. See TracingService::ConnectProducer() and
13681    /// |using_shmem_provided_by_producer| in InitializeConnectionResponse.
13682    #[prost(bool, optional, tag = "6")]
13683    pub producer_provided_shmem: ::core::option::Option<bool>,
13684    /// The version of the client library used by the producer.
13685    /// This is a human readable string with and its format varies depending on
13686    /// the build system that is used to build the code and the repo (standalone
13687    /// vs AOSP). This is intended for human debugging only.
13688    #[prost(string, optional, tag = "8")]
13689    pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
13690    /// On Windows, when producer_provided_shmem = true, the client creates a named
13691    /// SHM region and passes the name (an unguessable token) back to the service.
13692    /// Introduced in v13.
13693    #[prost(string, optional, tag = "7")]
13694    pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
13695}
13696/// Nested message and enum types in `InitializeConnectionRequest`.
13697pub mod initialize_connection_request {
13698    #[derive(
13699        Clone,
13700        Copy,
13701        Debug,
13702        PartialEq,
13703        Eq,
13704        Hash,
13705        PartialOrd,
13706        Ord,
13707        ::prost::Enumeration
13708    )]
13709    #[repr(i32)]
13710    pub enum ProducerSmbScrapingMode {
13711        /// Use the service's default setting for SMB scraping.
13712        SmbScrapingUnspecified = 0,
13713        /// Enable scraping of uncommitted chunks from the producer's shared memory
13714        /// buffer.
13715        SmbScrapingEnabled = 1,
13716        /// Disable scraping of uncommitted chunks from the producer's shared memory
13717        /// buffer.
13718        SmbScrapingDisabled = 2,
13719    }
13720    impl ProducerSmbScrapingMode {
13721        /// String value of the enum field names used in the ProtoBuf definition.
13722        ///
13723        /// The values are not transformed in any way and thus are considered stable
13724        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13725        pub fn as_str_name(&self) -> &'static str {
13726            match self {
13727                Self::SmbScrapingUnspecified => "SMB_SCRAPING_UNSPECIFIED",
13728                Self::SmbScrapingEnabled => "SMB_SCRAPING_ENABLED",
13729                Self::SmbScrapingDisabled => "SMB_SCRAPING_DISABLED",
13730            }
13731        }
13732        /// Creates an enum from field names used in the ProtoBuf definition.
13733        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13734            match value {
13735                "SMB_SCRAPING_UNSPECIFIED" => Some(Self::SmbScrapingUnspecified),
13736                "SMB_SCRAPING_ENABLED" => Some(Self::SmbScrapingEnabled),
13737                "SMB_SCRAPING_DISABLED" => Some(Self::SmbScrapingDisabled),
13738                _ => None,
13739            }
13740        }
13741    }
13742}
13743#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13744pub struct InitializeConnectionResponse {
13745    /// Indicates whether the service accepted the SMB provided by the producer in
13746    /// InitializeConnectionRequest (if any). If false, the shared memory buffer FD
13747    /// will provided by the service via the SetupTracing async command.
13748    #[prost(bool, optional, tag = "1")]
13749    pub using_shmem_provided_by_producer: ::core::option::Option<bool>,
13750    /// Indicates to the producer that the service allows direct SMB patching of
13751    /// chunks that have not yet been committed to it.
13752    /// This field has been introduced in Android S.
13753    #[prost(bool, optional, tag = "2")]
13754    pub direct_smb_patching_supported: ::core::option::Option<bool>,
13755    /// Indicates whether the service would like to use SMB emulation for the
13756    /// connection, and request the client to send chunk data over the socket e.g.
13757    /// for remote connection from a VM guest.
13758    #[prost(bool, optional, tag = "3")]
13759    pub use_shmem_emulation: ::core::option::Option<bool>,
13760}
13761#[derive(Clone, PartialEq, ::prost::Message)]
13762pub struct RegisterDataSourceRequest {
13763    #[prost(message, optional, tag = "1")]
13764    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
13765}
13766#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13767pub struct RegisterDataSourceResponse {
13768    /// Only set in case of errors, when |data_source_id| == 0.
13769    #[prost(string, optional, tag = "1")]
13770    pub error: ::core::option::Option<::prost::alloc::string::String>,
13771}
13772#[derive(Clone, PartialEq, ::prost::Message)]
13773pub struct UpdateDataSourceRequest {
13774    /// The new data_source_descriptor.{id, name} must match {id, name} of a
13775    /// data source previously registered via RegisterDataSource().
13776    #[prost(message, optional, tag = "1")]
13777    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
13778}
13779#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13780pub struct UpdateDataSourceResponse {}
13781#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13782pub struct UnregisterDataSourceRequest {
13783    /// The name of the data source to unregister, as previously passed in
13784    /// |RegisterDataSourceRequest.name|.
13785    #[prost(string, optional, tag = "1")]
13786    pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
13787}
13788#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13789pub struct UnregisterDataSourceResponse {}
13790#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13791pub struct RegisterTraceWriterRequest {
13792    /// The ID of a producer's trace writer.
13793    #[prost(uint32, optional, tag = "1")]
13794    pub trace_writer_id: ::core::option::Option<u32>,
13795    /// The ID of the target buffer that the trace writer commits its chunks to.
13796    #[prost(uint32, optional, tag = "2")]
13797    pub target_buffer: ::core::option::Option<u32>,
13798}
13799#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13800pub struct RegisterTraceWriterResponse {}
13801#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13802pub struct UnregisterTraceWriterRequest {
13803    /// The ID of a producer's trace writer.
13804    #[prost(uint32, optional, tag = "1")]
13805    pub trace_writer_id: ::core::option::Option<u32>,
13806}
13807#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13808pub struct UnregisterTraceWriterResponse {}
13809#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13810pub struct CommitDataResponse {}
13811#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13812pub struct NotifyDataSourceStartedRequest {
13813    /// ID of the data source that has successfully started.
13814    #[prost(uint64, optional, tag = "1")]
13815    pub data_source_id: ::core::option::Option<u64>,
13816}
13817#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13818pub struct NotifyDataSourceStartedResponse {}
13819#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13820pub struct NotifyDataSourceStoppedRequest {
13821    /// ID of the data source that has successfully stopped.
13822    #[prost(uint64, optional, tag = "1")]
13823    pub data_source_id: ::core::option::Option<u64>,
13824}
13825#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13826pub struct NotifyDataSourceStoppedResponse {}
13827#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13828pub struct ActivateTriggersRequest {
13829    #[prost(string, repeated, tag = "1")]
13830    pub trigger_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
13831}
13832#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13833pub struct ActivateTriggersResponse {}
13834#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13835pub struct GetAsyncCommandRequest {}
13836#[derive(Clone, PartialEq, ::prost::Message)]
13837pub struct GetAsyncCommandResponse {
13838    /// Next id: 8.
13839    #[prost(oneof = "get_async_command_response::Cmd", tags = "3, 6, 1, 2, 5, 7")]
13840    pub cmd: ::core::option::Option<get_async_command_response::Cmd>,
13841}
13842/// Nested message and enum types in `GetAsyncCommandResponse`.
13843pub mod get_async_command_response {
13844    /// Called after SetupTracing and before StartDataSource.
13845    /// This message was introduced in Android Q.
13846    #[derive(Clone, PartialEq, ::prost::Message)]
13847    pub struct SetupDataSource {
13848        #[prost(uint64, optional, tag = "1")]
13849        pub new_instance_id: ::core::option::Option<u64>,
13850        #[prost(message, optional, tag = "2")]
13851        pub config: ::core::option::Option<super::DataSourceConfig>,
13852    }
13853    #[derive(Clone, PartialEq, ::prost::Message)]
13854    pub struct StartDataSource {
13855        #[prost(uint64, optional, tag = "1")]
13856        pub new_instance_id: ::core::option::Option<u64>,
13857        /// For backwards compat reasons (with Android P), the config passed here
13858        /// is identical to the one passed to SetupDataSource.config.
13859        #[prost(message, optional, tag = "2")]
13860        pub config: ::core::option::Option<super::DataSourceConfig>,
13861    }
13862    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13863    pub struct StopDataSource {
13864        #[prost(uint64, optional, tag = "1")]
13865        pub instance_id: ::core::option::Option<u64>,
13866    }
13867    /// On Android/Linux/Mac this message also transports the file descriptor for
13868    /// the shared memory buffer (not a proto field).
13869    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13870    pub struct SetupTracing {
13871        #[prost(uint32, optional, tag = "1")]
13872        pub shared_buffer_page_size_kb: ::core::option::Option<u32>,
13873        /// On Windows, instead, we pass the name (an unguessable token) of a shared
13874        /// memory region that can be attached by the other process by name.
13875        /// Introduced in v13.
13876        #[prost(string, optional, tag = "2")]
13877        pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
13878    }
13879    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13880    pub struct Flush {
13881        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
13882        /// sources to flush.
13883        #[prost(uint64, repeated, packed = "false", tag = "1")]
13884        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
13885        /// A monotonic counter generated by the service. The producer is simply
13886        /// expected to copy this value back into the CommitDataRequest, so the
13887        /// service can tell when the data for this flush has been committed.
13888        #[prost(uint64, optional, tag = "2")]
13889        pub request_id: ::core::option::Option<u64>,
13890        /// More details such as flush reason and originator. Introduced in v38 / V.
13891        /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
13892        #[prost(uint64, optional, tag = "3")]
13893        pub flags: ::core::option::Option<u64>,
13894    }
13895    /// Instructs the given data sources to stop referring to any trace contents
13896    /// emitted so far. Sent only to active data sources that set
13897    /// |handles_incremental_state_clear| in their DataSourceDescriptor.
13898    ///
13899    /// Added to perfetto tree in May 2019.
13900    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13901    pub struct ClearIncrementalState {
13902        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
13903        /// sources that should clear their incremental state.
13904        #[prost(uint64, repeated, packed = "false", tag = "1")]
13905        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
13906    }
13907    /// Next id: 8.
13908    #[derive(Clone, PartialEq, ::prost::Oneof)]
13909    pub enum Cmd {
13910        #[prost(message, tag = "3")]
13911        SetupTracing(SetupTracing),
13912        #[prost(message, tag = "6")]
13913        SetupDataSource(SetupDataSource),
13914        #[prost(message, tag = "1")]
13915        StartDataSource(StartDataSource),
13916        #[prost(message, tag = "2")]
13917        StopDataSource(StopDataSource),
13918        /// id == 4 was teardown_tracing, never implemented.
13919        #[prost(message, tag = "5")]
13920        Flush(Flush),
13921        #[prost(message, tag = "7")]
13922        ClearIncrementalState(ClearIncrementalState),
13923    }
13924}
13925/// Arguments for rpc Sync().
13926#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13927pub struct SyncRequest {}
13928#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13929pub struct SyncResponse {}
13930#[derive(Clone, PartialEq, ::prost::Message)]
13931pub struct IpcFrame {
13932    /// The client is expected to send requests with monotonically increasing
13933    /// request_id. The host will match the request_id sent from the client.
13934    /// In the case of a Streaming response (has_more = true) the host will send
13935    /// several InvokeMethodReply with the same request_id.
13936    #[prost(uint64, optional, tag = "2")]
13937    pub request_id: ::core::option::Option<u64>,
13938    /// Used only in unittests to generate a parsable message of arbitrary size.
13939    #[prost(bytes = "vec", repeated, tag = "1")]
13940    pub data_for_testing: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
13941    #[prost(oneof = "ipc_frame::Msg", tags = "3, 4, 5, 6, 7, 8")]
13942    pub msg: ::core::option::Option<ipc_frame::Msg>,
13943}
13944/// Nested message and enum types in `IPCFrame`.
13945pub mod ipc_frame {
13946    /// Client -> Host.
13947    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13948    pub struct BindService {
13949        #[prost(string, optional, tag = "1")]
13950        pub service_name: ::core::option::Option<::prost::alloc::string::String>,
13951    }
13952    /// Host -> Client.
13953    #[derive(Clone, PartialEq, ::prost::Message)]
13954    pub struct BindServiceReply {
13955        #[prost(bool, optional, tag = "1")]
13956        pub success: ::core::option::Option<bool>,
13957        #[prost(uint32, optional, tag = "2")]
13958        pub service_id: ::core::option::Option<u32>,
13959        #[prost(message, repeated, tag = "3")]
13960        pub methods: ::prost::alloc::vec::Vec<bind_service_reply::MethodInfo>,
13961    }
13962    /// Nested message and enum types in `BindServiceReply`.
13963    pub mod bind_service_reply {
13964        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13965        pub struct MethodInfo {
13966            #[prost(uint32, optional, tag = "1")]
13967            pub id: ::core::option::Option<u32>,
13968            #[prost(string, optional, tag = "2")]
13969            pub name: ::core::option::Option<::prost::alloc::string::String>,
13970        }
13971    }
13972    /// Client -> Host.
13973    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13974    pub struct InvokeMethod {
13975        /// BindServiceReply.id.
13976        #[prost(uint32, optional, tag = "1")]
13977        pub service_id: ::core::option::Option<u32>,
13978        /// BindServiceReply.method.id.
13979        #[prost(uint32, optional, tag = "2")]
13980        pub method_id: ::core::option::Option<u32>,
13981        /// Proto-encoded request argument.
13982        #[prost(bytes = "vec", optional, tag = "3")]
13983        pub args_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13984        /// When true the client specifies that a reply is not needed. The use case
13985        /// is a method with an empty, where the client doesn't care about the
13986        /// success/failure of the method invocation and rather prefers avoiding the
13987        /// IPC roundtrip + context switch associated with the reply.
13988        #[prost(bool, optional, tag = "4")]
13989        pub drop_reply: ::core::option::Option<bool>,
13990    }
13991    /// Host -> Client.
13992    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13993    pub struct InvokeMethodReply {
13994        #[prost(bool, optional, tag = "1")]
13995        pub success: ::core::option::Option<bool>,
13996        /// only for streaming RPCs.
13997        #[prost(bool, optional, tag = "2")]
13998        pub has_more: ::core::option::Option<bool>,
13999        /// proto-encoded response value.
14000        #[prost(bytes = "vec", optional, tag = "3")]
14001        pub reply_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14002    }
14003    /// Host -> Client.
14004    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14005    pub struct RequestError {
14006        #[prost(string, optional, tag = "1")]
14007        pub error: ::core::option::Option<::prost::alloc::string::String>,
14008    }
14009    /// Client (relay service) -> Host. This is generated by the relay service to
14010    /// fill the producer identity in the guest. This message is sent to the host
14011    /// service *before* any IPCFrame is from a local producer is relayed. This is
14012    /// accepted only on AF_VSOCK and AF_INET sockets, where we cannot validate the
14013    /// endpoont of the connection. for AF_UNIX sockets, this is ignored and traced
14014    /// uses instead the SO_PEERCRED.
14015    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14016    pub struct SetPeerIdentity {
14017        /// The UID and PID of the producer process.
14018        #[prost(int32, optional, tag = "1")]
14019        pub pid: ::core::option::Option<i32>,
14020        #[prost(int32, optional, tag = "2")]
14021        pub uid: ::core::option::Option<i32>,
14022        /// The hint for the tracing service to infer the machine ID. This field
14023        /// should satisfy the requriement that different machines should have
14024        /// different values. In practice, this filed contains the Linux kernel
14025        /// boot_id, or a hash of kernel bootup timestamp and uname(2) if boot_id
14026        /// isn't available.
14027        #[prost(string, optional, tag = "3")]
14028        pub machine_id_hint: ::core::option::Option<::prost::alloc::string::String>,
14029        /// Human-readable name associated to the producer's machine. Provides the
14030        /// tracing service a new dimension to filter data sources on. Given the
14031        /// perfetto machine name is provided by users, there is no expectation of
14032        /// uniqueness across machines in a tracing session.
14033        #[prost(string, optional, tag = "4")]
14034        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
14035    }
14036    #[derive(Clone, PartialEq, ::prost::Oneof)]
14037    pub enum Msg {
14038        #[prost(message, tag = "3")]
14039        MsgBindService(BindService),
14040        #[prost(message, tag = "4")]
14041        MsgBindServiceReply(BindServiceReply),
14042        #[prost(message, tag = "5")]
14043        MsgInvokeMethod(InvokeMethod),
14044        #[prost(message, tag = "6")]
14045        MsgInvokeMethodReply(InvokeMethodReply),
14046        #[prost(message, tag = "7")]
14047        MsgRequestError(RequestError),
14048        #[prost(message, tag = "8")]
14049        SetPeerIdentity(SetPeerIdentity),
14050    }
14051}