1#![allow(unknown_lints)]
6#![allow(clippy::all)]
7
8#![allow(unused_attributes)]
9#![cfg_attr(rustfmt, rustfmt::skip)]
10
11#![allow(box_pointers)]
12#![allow(dead_code)]
13#![allow(missing_docs)]
14#![allow(non_camel_case_types)]
15#![allow(non_snake_case)]
16#![allow(non_upper_case_globals)]
17#![allow(trivial_casts)]
18#![allow(unused_imports)]
19#![allow(unused_results)]
20#[derive(PartialEq,Clone,Default)]
27pub struct Distribution {
28 pub count: i64,
30 pub mean: f64,
31 pub sum_of_squared_deviation: f64,
32 pub range: ::protobuf::SingularPtrField<Distribution_Range>,
33 pub bucket_options: ::protobuf::SingularPtrField<Distribution_BucketOptions>,
34 pub bucket_counts: ::std::vec::Vec<i64>,
35 pub exemplars: ::protobuf::RepeatedField<Distribution_Exemplar>,
36 pub unknown_fields: ::protobuf::UnknownFields,
38 pub cached_size: ::protobuf::CachedSize,
39}
40
41impl<'a> ::std::default::Default for &'a Distribution {
42 fn default() -> &'a Distribution {
43 <Distribution as ::protobuf::Message>::default_instance()
44 }
45}
46
47impl Distribution {
48 pub fn new() -> Distribution {
49 ::std::default::Default::default()
50 }
51
52 pub fn get_count(&self) -> i64 {
56 self.count
57 }
58 pub fn clear_count(&mut self) {
59 self.count = 0;
60 }
61
62 pub fn set_count(&mut self, v: i64) {
64 self.count = v;
65 }
66
67 pub fn get_mean(&self) -> f64 {
71 self.mean
72 }
73 pub fn clear_mean(&mut self) {
74 self.mean = 0.;
75 }
76
77 pub fn set_mean(&mut self, v: f64) {
79 self.mean = v;
80 }
81
82 pub fn get_sum_of_squared_deviation(&self) -> f64 {
86 self.sum_of_squared_deviation
87 }
88 pub fn clear_sum_of_squared_deviation(&mut self) {
89 self.sum_of_squared_deviation = 0.;
90 }
91
92 pub fn set_sum_of_squared_deviation(&mut self, v: f64) {
94 self.sum_of_squared_deviation = v;
95 }
96
97 pub fn get_range(&self) -> &Distribution_Range {
101 self.range.as_ref().unwrap_or_else(|| <Distribution_Range as ::protobuf::Message>::default_instance())
102 }
103 pub fn clear_range(&mut self) {
104 self.range.clear();
105 }
106
107 pub fn has_range(&self) -> bool {
108 self.range.is_some()
109 }
110
111 pub fn set_range(&mut self, v: Distribution_Range) {
113 self.range = ::protobuf::SingularPtrField::some(v);
114 }
115
116 pub fn mut_range(&mut self) -> &mut Distribution_Range {
119 if self.range.is_none() {
120 self.range.set_default();
121 }
122 self.range.as_mut().unwrap()
123 }
124
125 pub fn take_range(&mut self) -> Distribution_Range {
127 self.range.take().unwrap_or_else(|| Distribution_Range::new())
128 }
129
130 pub fn get_bucket_options(&self) -> &Distribution_BucketOptions {
134 self.bucket_options.as_ref().unwrap_or_else(|| <Distribution_BucketOptions as ::protobuf::Message>::default_instance())
135 }
136 pub fn clear_bucket_options(&mut self) {
137 self.bucket_options.clear();
138 }
139
140 pub fn has_bucket_options(&self) -> bool {
141 self.bucket_options.is_some()
142 }
143
144 pub fn set_bucket_options(&mut self, v: Distribution_BucketOptions) {
146 self.bucket_options = ::protobuf::SingularPtrField::some(v);
147 }
148
149 pub fn mut_bucket_options(&mut self) -> &mut Distribution_BucketOptions {
152 if self.bucket_options.is_none() {
153 self.bucket_options.set_default();
154 }
155 self.bucket_options.as_mut().unwrap()
156 }
157
158 pub fn take_bucket_options(&mut self) -> Distribution_BucketOptions {
160 self.bucket_options.take().unwrap_or_else(|| Distribution_BucketOptions::new())
161 }
162
163 pub fn get_bucket_counts(&self) -> &[i64] {
167 &self.bucket_counts
168 }
169 pub fn clear_bucket_counts(&mut self) {
170 self.bucket_counts.clear();
171 }
172
173 pub fn set_bucket_counts(&mut self, v: ::std::vec::Vec<i64>) {
175 self.bucket_counts = v;
176 }
177
178 pub fn mut_bucket_counts(&mut self) -> &mut ::std::vec::Vec<i64> {
180 &mut self.bucket_counts
181 }
182
183 pub fn take_bucket_counts(&mut self) -> ::std::vec::Vec<i64> {
185 ::std::mem::replace(&mut self.bucket_counts, ::std::vec::Vec::new())
186 }
187
188 pub fn get_exemplars(&self) -> &[Distribution_Exemplar] {
192 &self.exemplars
193 }
194 pub fn clear_exemplars(&mut self) {
195 self.exemplars.clear();
196 }
197
198 pub fn set_exemplars(&mut self, v: ::protobuf::RepeatedField<Distribution_Exemplar>) {
200 self.exemplars = v;
201 }
202
203 pub fn mut_exemplars(&mut self) -> &mut ::protobuf::RepeatedField<Distribution_Exemplar> {
205 &mut self.exemplars
206 }
207
208 pub fn take_exemplars(&mut self) -> ::protobuf::RepeatedField<Distribution_Exemplar> {
210 ::std::mem::replace(&mut self.exemplars, ::protobuf::RepeatedField::new())
211 }
212}
213
214impl ::protobuf::Message for Distribution {
215 fn is_initialized(&self) -> bool {
216 for v in &self.range {
217 if !v.is_initialized() {
218 return false;
219 }
220 };
221 for v in &self.bucket_options {
222 if !v.is_initialized() {
223 return false;
224 }
225 };
226 for v in &self.exemplars {
227 if !v.is_initialized() {
228 return false;
229 }
230 };
231 true
232 }
233
234 fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
235 while !is.eof()? {
236 let (field_number, wire_type) = is.read_tag_unpack()?;
237 match field_number {
238 1 => {
239 if wire_type != ::protobuf::wire_format::WireTypeVarint {
240 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
241 }
242 let tmp = is.read_int64()?;
243 self.count = tmp;
244 },
245 2 => {
246 if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
247 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
248 }
249 let tmp = is.read_double()?;
250 self.mean = tmp;
251 },
252 3 => {
253 if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
254 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
255 }
256 let tmp = is.read_double()?;
257 self.sum_of_squared_deviation = tmp;
258 },
259 4 => {
260 ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.range)?;
261 },
262 6 => {
263 ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.bucket_options)?;
264 },
265 7 => {
266 ::protobuf::rt::read_repeated_int64_into(wire_type, is, &mut self.bucket_counts)?;
267 },
268 10 => {
269 ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.exemplars)?;
270 },
271 _ => {
272 ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
273 },
274 };
275 }
276 ::std::result::Result::Ok(())
277 }
278
279 #[allow(unused_variables)]
281 fn compute_size(&self) -> u32 {
282 let mut my_size = 0;
283 if self.count != 0 {
284 my_size += ::protobuf::rt::value_size(1, self.count, ::protobuf::wire_format::WireTypeVarint);
285 }
286 if self.mean != 0. {
287 my_size += 9;
288 }
289 if self.sum_of_squared_deviation != 0. {
290 my_size += 9;
291 }
292 if let Some(ref v) = self.range.as_ref() {
293 let len = v.compute_size();
294 my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
295 }
296 if let Some(ref v) = self.bucket_options.as_ref() {
297 let len = v.compute_size();
298 my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
299 }
300 for value in &self.bucket_counts {
301 my_size += ::protobuf::rt::value_size(7, *value, ::protobuf::wire_format::WireTypeVarint);
302 };
303 for value in &self.exemplars {
304 let len = value.compute_size();
305 my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
306 };
307 my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
308 self.cached_size.set(my_size);
309 my_size
310 }
311
312 fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
313 if self.count != 0 {
314 os.write_int64(1, self.count)?;
315 }
316 if self.mean != 0. {
317 os.write_double(2, self.mean)?;
318 }
319 if self.sum_of_squared_deviation != 0. {
320 os.write_double(3, self.sum_of_squared_deviation)?;
321 }
322 if let Some(ref v) = self.range.as_ref() {
323 os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
324 os.write_raw_varint32(v.get_cached_size())?;
325 v.write_to_with_cached_sizes(os)?;
326 }
327 if let Some(ref v) = self.bucket_options.as_ref() {
328 os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
329 os.write_raw_varint32(v.get_cached_size())?;
330 v.write_to_with_cached_sizes(os)?;
331 }
332 for v in &self.bucket_counts {
333 os.write_int64(7, *v)?;
334 };
335 for v in &self.exemplars {
336 os.write_tag(10, ::protobuf::wire_format::WireTypeLengthDelimited)?;
337 os.write_raw_varint32(v.get_cached_size())?;
338 v.write_to_with_cached_sizes(os)?;
339 };
340 os.write_unknown_fields(self.get_unknown_fields())?;
341 ::std::result::Result::Ok(())
342 }
343
344 fn get_cached_size(&self) -> u32 {
345 self.cached_size.get()
346 }
347
348 fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
349 &self.unknown_fields
350 }
351
352 fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
353 &mut self.unknown_fields
354 }
355
356 fn as_any(&self) -> &dyn (::std::any::Any) {
357 self as &dyn (::std::any::Any)
358 }
359 fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
360 self as &mut dyn (::std::any::Any)
361 }
362 fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
363 self
364 }
365
366 fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
367 Self::descriptor_static()
368 }
369
370 fn new() -> Distribution {
371 Distribution::new()
372 }
373
374 fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
375 static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
376 descriptor.get(|| {
377 let mut fields = ::std::vec::Vec::new();
378 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
379 "count",
380 |m: &Distribution| { &m.count },
381 |m: &mut Distribution| { &mut m.count },
382 ));
383 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
384 "mean",
385 |m: &Distribution| { &m.mean },
386 |m: &mut Distribution| { &mut m.mean },
387 ));
388 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
389 "sum_of_squared_deviation",
390 |m: &Distribution| { &m.sum_of_squared_deviation },
391 |m: &mut Distribution| { &mut m.sum_of_squared_deviation },
392 ));
393 fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Distribution_Range>>(
394 "range",
395 |m: &Distribution| { &m.range },
396 |m: &mut Distribution| { &mut m.range },
397 ));
398 fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Distribution_BucketOptions>>(
399 "bucket_options",
400 |m: &Distribution| { &m.bucket_options },
401 |m: &mut Distribution| { &mut m.bucket_options },
402 ));
403 fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
404 "bucket_counts",
405 |m: &Distribution| { &m.bucket_counts },
406 |m: &mut Distribution| { &mut m.bucket_counts },
407 ));
408 fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Distribution_Exemplar>>(
409 "exemplars",
410 |m: &Distribution| { &m.exemplars },
411 |m: &mut Distribution| { &mut m.exemplars },
412 ));
413 ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution>(
414 "Distribution",
415 fields,
416 file_descriptor_proto()
417 )
418 })
419 }
420
421 fn default_instance() -> &'static Distribution {
422 static instance: ::protobuf::rt::LazyV2<Distribution> = ::protobuf::rt::LazyV2::INIT;
423 instance.get(Distribution::new)
424 }
425}
426
427impl ::protobuf::Clear for Distribution {
428 fn clear(&mut self) {
429 self.count = 0;
430 self.mean = 0.;
431 self.sum_of_squared_deviation = 0.;
432 self.range.clear();
433 self.bucket_options.clear();
434 self.bucket_counts.clear();
435 self.exemplars.clear();
436 self.unknown_fields.clear();
437 }
438}
439
440impl ::std::fmt::Debug for Distribution {
441 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
442 ::protobuf::text_format::fmt(self, f)
443 }
444}
445
446impl ::protobuf::reflect::ProtobufValue for Distribution {
447 fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
448 ::protobuf::reflect::ReflectValueRef::Message(self)
449 }
450}
451
452#[derive(PartialEq,Clone,Default)]
453pub struct Distribution_Range {
454 pub min: f64,
456 pub max: f64,
457 pub unknown_fields: ::protobuf::UnknownFields,
459 pub cached_size: ::protobuf::CachedSize,
460}
461
462impl<'a> ::std::default::Default for &'a Distribution_Range {
463 fn default() -> &'a Distribution_Range {
464 <Distribution_Range as ::protobuf::Message>::default_instance()
465 }
466}
467
468impl Distribution_Range {
469 pub fn new() -> Distribution_Range {
470 ::std::default::Default::default()
471 }
472
473 pub fn get_min(&self) -> f64 {
477 self.min
478 }
479 pub fn clear_min(&mut self) {
480 self.min = 0.;
481 }
482
483 pub fn set_min(&mut self, v: f64) {
485 self.min = v;
486 }
487
488 pub fn get_max(&self) -> f64 {
492 self.max
493 }
494 pub fn clear_max(&mut self) {
495 self.max = 0.;
496 }
497
498 pub fn set_max(&mut self, v: f64) {
500 self.max = v;
501 }
502}
503
504impl ::protobuf::Message for Distribution_Range {
505 fn is_initialized(&self) -> bool {
506 true
507 }
508
509 fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
510 while !is.eof()? {
511 let (field_number, wire_type) = is.read_tag_unpack()?;
512 match field_number {
513 1 => {
514 if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
515 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
516 }
517 let tmp = is.read_double()?;
518 self.min = tmp;
519 },
520 2 => {
521 if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
522 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
523 }
524 let tmp = is.read_double()?;
525 self.max = tmp;
526 },
527 _ => {
528 ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
529 },
530 };
531 }
532 ::std::result::Result::Ok(())
533 }
534
535 #[allow(unused_variables)]
537 fn compute_size(&self) -> u32 {
538 let mut my_size = 0;
539 if self.min != 0. {
540 my_size += 9;
541 }
542 if self.max != 0. {
543 my_size += 9;
544 }
545 my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
546 self.cached_size.set(my_size);
547 my_size
548 }
549
550 fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
551 if self.min != 0. {
552 os.write_double(1, self.min)?;
553 }
554 if self.max != 0. {
555 os.write_double(2, self.max)?;
556 }
557 os.write_unknown_fields(self.get_unknown_fields())?;
558 ::std::result::Result::Ok(())
559 }
560
561 fn get_cached_size(&self) -> u32 {
562 self.cached_size.get()
563 }
564
565 fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
566 &self.unknown_fields
567 }
568
569 fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
570 &mut self.unknown_fields
571 }
572
573 fn as_any(&self) -> &dyn (::std::any::Any) {
574 self as &dyn (::std::any::Any)
575 }
576 fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
577 self as &mut dyn (::std::any::Any)
578 }
579 fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
580 self
581 }
582
583 fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
584 Self::descriptor_static()
585 }
586
587 fn new() -> Distribution_Range {
588 Distribution_Range::new()
589 }
590
591 fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
592 static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
593 descriptor.get(|| {
594 let mut fields = ::std::vec::Vec::new();
595 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
596 "min",
597 |m: &Distribution_Range| { &m.min },
598 |m: &mut Distribution_Range| { &mut m.min },
599 ));
600 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
601 "max",
602 |m: &Distribution_Range| { &m.max },
603 |m: &mut Distribution_Range| { &mut m.max },
604 ));
605 ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_Range>(
606 "Distribution.Range",
607 fields,
608 file_descriptor_proto()
609 )
610 })
611 }
612
613 fn default_instance() -> &'static Distribution_Range {
614 static instance: ::protobuf::rt::LazyV2<Distribution_Range> = ::protobuf::rt::LazyV2::INIT;
615 instance.get(Distribution_Range::new)
616 }
617}
618
619impl ::protobuf::Clear for Distribution_Range {
620 fn clear(&mut self) {
621 self.min = 0.;
622 self.max = 0.;
623 self.unknown_fields.clear();
624 }
625}
626
627impl ::std::fmt::Debug for Distribution_Range {
628 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
629 ::protobuf::text_format::fmt(self, f)
630 }
631}
632
633impl ::protobuf::reflect::ProtobufValue for Distribution_Range {
634 fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
635 ::protobuf::reflect::ReflectValueRef::Message(self)
636 }
637}
638
639#[derive(PartialEq,Clone,Default)]
640pub struct Distribution_BucketOptions {
641 pub options: ::std::option::Option<Distribution_BucketOptions_oneof_options>,
643 pub unknown_fields: ::protobuf::UnknownFields,
645 pub cached_size: ::protobuf::CachedSize,
646}
647
648impl<'a> ::std::default::Default for &'a Distribution_BucketOptions {
649 fn default() -> &'a Distribution_BucketOptions {
650 <Distribution_BucketOptions as ::protobuf::Message>::default_instance()
651 }
652}
653
654#[derive(Clone,PartialEq,Debug)]
655pub enum Distribution_BucketOptions_oneof_options {
656 linear_buckets(Distribution_BucketOptions_Linear),
657 exponential_buckets(Distribution_BucketOptions_Exponential),
658 explicit_buckets(Distribution_BucketOptions_Explicit),
659}
660
661impl Distribution_BucketOptions {
662 pub fn new() -> Distribution_BucketOptions {
663 ::std::default::Default::default()
664 }
665
666 pub fn get_linear_buckets(&self) -> &Distribution_BucketOptions_Linear {
670 match self.options {
671 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(ref v)) => v,
672 _ => <Distribution_BucketOptions_Linear as ::protobuf::Message>::default_instance(),
673 }
674 }
675 pub fn clear_linear_buckets(&mut self) {
676 self.options = ::std::option::Option::None;
677 }
678
679 pub fn has_linear_buckets(&self) -> bool {
680 match self.options {
681 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(..)) => true,
682 _ => false,
683 }
684 }
685
686 pub fn set_linear_buckets(&mut self, v: Distribution_BucketOptions_Linear) {
688 self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(v))
689 }
690
691 pub fn mut_linear_buckets(&mut self) -> &mut Distribution_BucketOptions_Linear {
693 if let ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(_)) = self.options {
694 } else {
695 self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(Distribution_BucketOptions_Linear::new()));
696 }
697 match self.options {
698 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(ref mut v)) => v,
699 _ => panic!(),
700 }
701 }
702
703 pub fn take_linear_buckets(&mut self) -> Distribution_BucketOptions_Linear {
705 if self.has_linear_buckets() {
706 match self.options.take() {
707 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(v)) => v,
708 _ => panic!(),
709 }
710 } else {
711 Distribution_BucketOptions_Linear::new()
712 }
713 }
714
715 pub fn get_exponential_buckets(&self) -> &Distribution_BucketOptions_Exponential {
719 match self.options {
720 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(ref v)) => v,
721 _ => <Distribution_BucketOptions_Exponential as ::protobuf::Message>::default_instance(),
722 }
723 }
724 pub fn clear_exponential_buckets(&mut self) {
725 self.options = ::std::option::Option::None;
726 }
727
728 pub fn has_exponential_buckets(&self) -> bool {
729 match self.options {
730 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(..)) => true,
731 _ => false,
732 }
733 }
734
735 pub fn set_exponential_buckets(&mut self, v: Distribution_BucketOptions_Exponential) {
737 self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(v))
738 }
739
740 pub fn mut_exponential_buckets(&mut self) -> &mut Distribution_BucketOptions_Exponential {
742 if let ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(_)) = self.options {
743 } else {
744 self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(Distribution_BucketOptions_Exponential::new()));
745 }
746 match self.options {
747 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(ref mut v)) => v,
748 _ => panic!(),
749 }
750 }
751
752 pub fn take_exponential_buckets(&mut self) -> Distribution_BucketOptions_Exponential {
754 if self.has_exponential_buckets() {
755 match self.options.take() {
756 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(v)) => v,
757 _ => panic!(),
758 }
759 } else {
760 Distribution_BucketOptions_Exponential::new()
761 }
762 }
763
764 pub fn get_explicit_buckets(&self) -> &Distribution_BucketOptions_Explicit {
768 match self.options {
769 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(ref v)) => v,
770 _ => <Distribution_BucketOptions_Explicit as ::protobuf::Message>::default_instance(),
771 }
772 }
773 pub fn clear_explicit_buckets(&mut self) {
774 self.options = ::std::option::Option::None;
775 }
776
777 pub fn has_explicit_buckets(&self) -> bool {
778 match self.options {
779 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(..)) => true,
780 _ => false,
781 }
782 }
783
784 pub fn set_explicit_buckets(&mut self, v: Distribution_BucketOptions_Explicit) {
786 self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(v))
787 }
788
789 pub fn mut_explicit_buckets(&mut self) -> &mut Distribution_BucketOptions_Explicit {
791 if let ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(_)) = self.options {
792 } else {
793 self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(Distribution_BucketOptions_Explicit::new()));
794 }
795 match self.options {
796 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(ref mut v)) => v,
797 _ => panic!(),
798 }
799 }
800
801 pub fn take_explicit_buckets(&mut self) -> Distribution_BucketOptions_Explicit {
803 if self.has_explicit_buckets() {
804 match self.options.take() {
805 ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(v)) => v,
806 _ => panic!(),
807 }
808 } else {
809 Distribution_BucketOptions_Explicit::new()
810 }
811 }
812}
813
814impl ::protobuf::Message for Distribution_BucketOptions {
815 fn is_initialized(&self) -> bool {
816 if let Some(Distribution_BucketOptions_oneof_options::linear_buckets(ref v)) = self.options {
817 if !v.is_initialized() {
818 return false;
819 }
820 }
821 if let Some(Distribution_BucketOptions_oneof_options::exponential_buckets(ref v)) = self.options {
822 if !v.is_initialized() {
823 return false;
824 }
825 }
826 if let Some(Distribution_BucketOptions_oneof_options::explicit_buckets(ref v)) = self.options {
827 if !v.is_initialized() {
828 return false;
829 }
830 }
831 true
832 }
833
834 fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
835 while !is.eof()? {
836 let (field_number, wire_type) = is.read_tag_unpack()?;
837 match field_number {
838 1 => {
839 if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
840 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
841 }
842 self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::linear_buckets(is.read_message()?));
843 },
844 2 => {
845 if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
846 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
847 }
848 self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::exponential_buckets(is.read_message()?));
849 },
850 3 => {
851 if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
852 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
853 }
854 self.options = ::std::option::Option::Some(Distribution_BucketOptions_oneof_options::explicit_buckets(is.read_message()?));
855 },
856 _ => {
857 ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
858 },
859 };
860 }
861 ::std::result::Result::Ok(())
862 }
863
864 #[allow(unused_variables)]
866 fn compute_size(&self) -> u32 {
867 let mut my_size = 0;
868 if let ::std::option::Option::Some(ref v) = self.options {
869 match v {
870 &Distribution_BucketOptions_oneof_options::linear_buckets(ref v) => {
871 let len = v.compute_size();
872 my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
873 },
874 &Distribution_BucketOptions_oneof_options::exponential_buckets(ref v) => {
875 let len = v.compute_size();
876 my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
877 },
878 &Distribution_BucketOptions_oneof_options::explicit_buckets(ref v) => {
879 let len = v.compute_size();
880 my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
881 },
882 };
883 }
884 my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
885 self.cached_size.set(my_size);
886 my_size
887 }
888
889 fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
890 if let ::std::option::Option::Some(ref v) = self.options {
891 match v {
892 &Distribution_BucketOptions_oneof_options::linear_buckets(ref v) => {
893 os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
894 os.write_raw_varint32(v.get_cached_size())?;
895 v.write_to_with_cached_sizes(os)?;
896 },
897 &Distribution_BucketOptions_oneof_options::exponential_buckets(ref v) => {
898 os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
899 os.write_raw_varint32(v.get_cached_size())?;
900 v.write_to_with_cached_sizes(os)?;
901 },
902 &Distribution_BucketOptions_oneof_options::explicit_buckets(ref v) => {
903 os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
904 os.write_raw_varint32(v.get_cached_size())?;
905 v.write_to_with_cached_sizes(os)?;
906 },
907 };
908 }
909 os.write_unknown_fields(self.get_unknown_fields())?;
910 ::std::result::Result::Ok(())
911 }
912
913 fn get_cached_size(&self) -> u32 {
914 self.cached_size.get()
915 }
916
917 fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
918 &self.unknown_fields
919 }
920
921 fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
922 &mut self.unknown_fields
923 }
924
925 fn as_any(&self) -> &dyn (::std::any::Any) {
926 self as &dyn (::std::any::Any)
927 }
928 fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
929 self as &mut dyn (::std::any::Any)
930 }
931 fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
932 self
933 }
934
935 fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
936 Self::descriptor_static()
937 }
938
939 fn new() -> Distribution_BucketOptions {
940 Distribution_BucketOptions::new()
941 }
942
943 fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
944 static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
945 descriptor.get(|| {
946 let mut fields = ::std::vec::Vec::new();
947 fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Distribution_BucketOptions_Linear>(
948 "linear_buckets",
949 Distribution_BucketOptions::has_linear_buckets,
950 Distribution_BucketOptions::get_linear_buckets,
951 ));
952 fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Distribution_BucketOptions_Exponential>(
953 "exponential_buckets",
954 Distribution_BucketOptions::has_exponential_buckets,
955 Distribution_BucketOptions::get_exponential_buckets,
956 ));
957 fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Distribution_BucketOptions_Explicit>(
958 "explicit_buckets",
959 Distribution_BucketOptions::has_explicit_buckets,
960 Distribution_BucketOptions::get_explicit_buckets,
961 ));
962 ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_BucketOptions>(
963 "Distribution.BucketOptions",
964 fields,
965 file_descriptor_proto()
966 )
967 })
968 }
969
970 fn default_instance() -> &'static Distribution_BucketOptions {
971 static instance: ::protobuf::rt::LazyV2<Distribution_BucketOptions> = ::protobuf::rt::LazyV2::INIT;
972 instance.get(Distribution_BucketOptions::new)
973 }
974}
975
976impl ::protobuf::Clear for Distribution_BucketOptions {
977 fn clear(&mut self) {
978 self.options = ::std::option::Option::None;
979 self.options = ::std::option::Option::None;
980 self.options = ::std::option::Option::None;
981 self.unknown_fields.clear();
982 }
983}
984
985impl ::std::fmt::Debug for Distribution_BucketOptions {
986 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
987 ::protobuf::text_format::fmt(self, f)
988 }
989}
990
991impl ::protobuf::reflect::ProtobufValue for Distribution_BucketOptions {
992 fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
993 ::protobuf::reflect::ReflectValueRef::Message(self)
994 }
995}
996
997#[derive(PartialEq,Clone,Default)]
998pub struct Distribution_BucketOptions_Linear {
999 pub num_finite_buckets: i32,
1001 pub width: f64,
1002 pub offset: f64,
1003 pub unknown_fields: ::protobuf::UnknownFields,
1005 pub cached_size: ::protobuf::CachedSize,
1006}
1007
1008impl<'a> ::std::default::Default for &'a Distribution_BucketOptions_Linear {
1009 fn default() -> &'a Distribution_BucketOptions_Linear {
1010 <Distribution_BucketOptions_Linear as ::protobuf::Message>::default_instance()
1011 }
1012}
1013
1014impl Distribution_BucketOptions_Linear {
1015 pub fn new() -> Distribution_BucketOptions_Linear {
1016 ::std::default::Default::default()
1017 }
1018
1019 pub fn get_num_finite_buckets(&self) -> i32 {
1023 self.num_finite_buckets
1024 }
1025 pub fn clear_num_finite_buckets(&mut self) {
1026 self.num_finite_buckets = 0;
1027 }
1028
1029 pub fn set_num_finite_buckets(&mut self, v: i32) {
1031 self.num_finite_buckets = v;
1032 }
1033
1034 pub fn get_width(&self) -> f64 {
1038 self.width
1039 }
1040 pub fn clear_width(&mut self) {
1041 self.width = 0.;
1042 }
1043
1044 pub fn set_width(&mut self, v: f64) {
1046 self.width = v;
1047 }
1048
1049 pub fn get_offset(&self) -> f64 {
1053 self.offset
1054 }
1055 pub fn clear_offset(&mut self) {
1056 self.offset = 0.;
1057 }
1058
1059 pub fn set_offset(&mut self, v: f64) {
1061 self.offset = v;
1062 }
1063}
1064
1065impl ::protobuf::Message for Distribution_BucketOptions_Linear {
1066 fn is_initialized(&self) -> bool {
1067 true
1068 }
1069
1070 fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1071 while !is.eof()? {
1072 let (field_number, wire_type) = is.read_tag_unpack()?;
1073 match field_number {
1074 1 => {
1075 if wire_type != ::protobuf::wire_format::WireTypeVarint {
1076 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1077 }
1078 let tmp = is.read_int32()?;
1079 self.num_finite_buckets = tmp;
1080 },
1081 2 => {
1082 if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1083 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1084 }
1085 let tmp = is.read_double()?;
1086 self.width = tmp;
1087 },
1088 3 => {
1089 if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1090 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1091 }
1092 let tmp = is.read_double()?;
1093 self.offset = tmp;
1094 },
1095 _ => {
1096 ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1097 },
1098 };
1099 }
1100 ::std::result::Result::Ok(())
1101 }
1102
1103 #[allow(unused_variables)]
1105 fn compute_size(&self) -> u32 {
1106 let mut my_size = 0;
1107 if self.num_finite_buckets != 0 {
1108 my_size += ::protobuf::rt::value_size(1, self.num_finite_buckets, ::protobuf::wire_format::WireTypeVarint);
1109 }
1110 if self.width != 0. {
1111 my_size += 9;
1112 }
1113 if self.offset != 0. {
1114 my_size += 9;
1115 }
1116 my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1117 self.cached_size.set(my_size);
1118 my_size
1119 }
1120
1121 fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1122 if self.num_finite_buckets != 0 {
1123 os.write_int32(1, self.num_finite_buckets)?;
1124 }
1125 if self.width != 0. {
1126 os.write_double(2, self.width)?;
1127 }
1128 if self.offset != 0. {
1129 os.write_double(3, self.offset)?;
1130 }
1131 os.write_unknown_fields(self.get_unknown_fields())?;
1132 ::std::result::Result::Ok(())
1133 }
1134
1135 fn get_cached_size(&self) -> u32 {
1136 self.cached_size.get()
1137 }
1138
1139 fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1140 &self.unknown_fields
1141 }
1142
1143 fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1144 &mut self.unknown_fields
1145 }
1146
1147 fn as_any(&self) -> &dyn (::std::any::Any) {
1148 self as &dyn (::std::any::Any)
1149 }
1150 fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1151 self as &mut dyn (::std::any::Any)
1152 }
1153 fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1154 self
1155 }
1156
1157 fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1158 Self::descriptor_static()
1159 }
1160
1161 fn new() -> Distribution_BucketOptions_Linear {
1162 Distribution_BucketOptions_Linear::new()
1163 }
1164
1165 fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1166 static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1167 descriptor.get(|| {
1168 let mut fields = ::std::vec::Vec::new();
1169 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
1170 "num_finite_buckets",
1171 |m: &Distribution_BucketOptions_Linear| { &m.num_finite_buckets },
1172 |m: &mut Distribution_BucketOptions_Linear| { &mut m.num_finite_buckets },
1173 ));
1174 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1175 "width",
1176 |m: &Distribution_BucketOptions_Linear| { &m.width },
1177 |m: &mut Distribution_BucketOptions_Linear| { &mut m.width },
1178 ));
1179 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1180 "offset",
1181 |m: &Distribution_BucketOptions_Linear| { &m.offset },
1182 |m: &mut Distribution_BucketOptions_Linear| { &mut m.offset },
1183 ));
1184 ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_BucketOptions_Linear>(
1185 "Distribution.BucketOptions.Linear",
1186 fields,
1187 file_descriptor_proto()
1188 )
1189 })
1190 }
1191
1192 fn default_instance() -> &'static Distribution_BucketOptions_Linear {
1193 static instance: ::protobuf::rt::LazyV2<Distribution_BucketOptions_Linear> = ::protobuf::rt::LazyV2::INIT;
1194 instance.get(Distribution_BucketOptions_Linear::new)
1195 }
1196}
1197
1198impl ::protobuf::Clear for Distribution_BucketOptions_Linear {
1199 fn clear(&mut self) {
1200 self.num_finite_buckets = 0;
1201 self.width = 0.;
1202 self.offset = 0.;
1203 self.unknown_fields.clear();
1204 }
1205}
1206
1207impl ::std::fmt::Debug for Distribution_BucketOptions_Linear {
1208 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1209 ::protobuf::text_format::fmt(self, f)
1210 }
1211}
1212
1213impl ::protobuf::reflect::ProtobufValue for Distribution_BucketOptions_Linear {
1214 fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1215 ::protobuf::reflect::ReflectValueRef::Message(self)
1216 }
1217}
1218
1219#[derive(PartialEq,Clone,Default)]
1220pub struct Distribution_BucketOptions_Exponential {
1221 pub num_finite_buckets: i32,
1223 pub growth_factor: f64,
1224 pub scale: f64,
1225 pub unknown_fields: ::protobuf::UnknownFields,
1227 pub cached_size: ::protobuf::CachedSize,
1228}
1229
1230impl<'a> ::std::default::Default for &'a Distribution_BucketOptions_Exponential {
1231 fn default() -> &'a Distribution_BucketOptions_Exponential {
1232 <Distribution_BucketOptions_Exponential as ::protobuf::Message>::default_instance()
1233 }
1234}
1235
1236impl Distribution_BucketOptions_Exponential {
1237 pub fn new() -> Distribution_BucketOptions_Exponential {
1238 ::std::default::Default::default()
1239 }
1240
1241 pub fn get_num_finite_buckets(&self) -> i32 {
1245 self.num_finite_buckets
1246 }
1247 pub fn clear_num_finite_buckets(&mut self) {
1248 self.num_finite_buckets = 0;
1249 }
1250
1251 pub fn set_num_finite_buckets(&mut self, v: i32) {
1253 self.num_finite_buckets = v;
1254 }
1255
1256 pub fn get_growth_factor(&self) -> f64 {
1260 self.growth_factor
1261 }
1262 pub fn clear_growth_factor(&mut self) {
1263 self.growth_factor = 0.;
1264 }
1265
1266 pub fn set_growth_factor(&mut self, v: f64) {
1268 self.growth_factor = v;
1269 }
1270
1271 pub fn get_scale(&self) -> f64 {
1275 self.scale
1276 }
1277 pub fn clear_scale(&mut self) {
1278 self.scale = 0.;
1279 }
1280
1281 pub fn set_scale(&mut self, v: f64) {
1283 self.scale = v;
1284 }
1285}
1286
1287impl ::protobuf::Message for Distribution_BucketOptions_Exponential {
1288 fn is_initialized(&self) -> bool {
1289 true
1290 }
1291
1292 fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1293 while !is.eof()? {
1294 let (field_number, wire_type) = is.read_tag_unpack()?;
1295 match field_number {
1296 1 => {
1297 if wire_type != ::protobuf::wire_format::WireTypeVarint {
1298 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1299 }
1300 let tmp = is.read_int32()?;
1301 self.num_finite_buckets = tmp;
1302 },
1303 2 => {
1304 if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1305 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1306 }
1307 let tmp = is.read_double()?;
1308 self.growth_factor = tmp;
1309 },
1310 3 => {
1311 if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1312 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1313 }
1314 let tmp = is.read_double()?;
1315 self.scale = tmp;
1316 },
1317 _ => {
1318 ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1319 },
1320 };
1321 }
1322 ::std::result::Result::Ok(())
1323 }
1324
1325 #[allow(unused_variables)]
1327 fn compute_size(&self) -> u32 {
1328 let mut my_size = 0;
1329 if self.num_finite_buckets != 0 {
1330 my_size += ::protobuf::rt::value_size(1, self.num_finite_buckets, ::protobuf::wire_format::WireTypeVarint);
1331 }
1332 if self.growth_factor != 0. {
1333 my_size += 9;
1334 }
1335 if self.scale != 0. {
1336 my_size += 9;
1337 }
1338 my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1339 self.cached_size.set(my_size);
1340 my_size
1341 }
1342
1343 fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1344 if self.num_finite_buckets != 0 {
1345 os.write_int32(1, self.num_finite_buckets)?;
1346 }
1347 if self.growth_factor != 0. {
1348 os.write_double(2, self.growth_factor)?;
1349 }
1350 if self.scale != 0. {
1351 os.write_double(3, self.scale)?;
1352 }
1353 os.write_unknown_fields(self.get_unknown_fields())?;
1354 ::std::result::Result::Ok(())
1355 }
1356
1357 fn get_cached_size(&self) -> u32 {
1358 self.cached_size.get()
1359 }
1360
1361 fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1362 &self.unknown_fields
1363 }
1364
1365 fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1366 &mut self.unknown_fields
1367 }
1368
1369 fn as_any(&self) -> &dyn (::std::any::Any) {
1370 self as &dyn (::std::any::Any)
1371 }
1372 fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1373 self as &mut dyn (::std::any::Any)
1374 }
1375 fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1376 self
1377 }
1378
1379 fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1380 Self::descriptor_static()
1381 }
1382
1383 fn new() -> Distribution_BucketOptions_Exponential {
1384 Distribution_BucketOptions_Exponential::new()
1385 }
1386
1387 fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1388 static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1389 descriptor.get(|| {
1390 let mut fields = ::std::vec::Vec::new();
1391 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
1392 "num_finite_buckets",
1393 |m: &Distribution_BucketOptions_Exponential| { &m.num_finite_buckets },
1394 |m: &mut Distribution_BucketOptions_Exponential| { &mut m.num_finite_buckets },
1395 ));
1396 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1397 "growth_factor",
1398 |m: &Distribution_BucketOptions_Exponential| { &m.growth_factor },
1399 |m: &mut Distribution_BucketOptions_Exponential| { &mut m.growth_factor },
1400 ));
1401 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1402 "scale",
1403 |m: &Distribution_BucketOptions_Exponential| { &m.scale },
1404 |m: &mut Distribution_BucketOptions_Exponential| { &mut m.scale },
1405 ));
1406 ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_BucketOptions_Exponential>(
1407 "Distribution.BucketOptions.Exponential",
1408 fields,
1409 file_descriptor_proto()
1410 )
1411 })
1412 }
1413
1414 fn default_instance() -> &'static Distribution_BucketOptions_Exponential {
1415 static instance: ::protobuf::rt::LazyV2<Distribution_BucketOptions_Exponential> = ::protobuf::rt::LazyV2::INIT;
1416 instance.get(Distribution_BucketOptions_Exponential::new)
1417 }
1418}
1419
1420impl ::protobuf::Clear for Distribution_BucketOptions_Exponential {
1421 fn clear(&mut self) {
1422 self.num_finite_buckets = 0;
1423 self.growth_factor = 0.;
1424 self.scale = 0.;
1425 self.unknown_fields.clear();
1426 }
1427}
1428
1429impl ::std::fmt::Debug for Distribution_BucketOptions_Exponential {
1430 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1431 ::protobuf::text_format::fmt(self, f)
1432 }
1433}
1434
1435impl ::protobuf::reflect::ProtobufValue for Distribution_BucketOptions_Exponential {
1436 fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1437 ::protobuf::reflect::ReflectValueRef::Message(self)
1438 }
1439}
1440
1441#[derive(PartialEq,Clone,Default)]
1442pub struct Distribution_BucketOptions_Explicit {
1443 pub bounds: ::std::vec::Vec<f64>,
1445 pub unknown_fields: ::protobuf::UnknownFields,
1447 pub cached_size: ::protobuf::CachedSize,
1448}
1449
1450impl<'a> ::std::default::Default for &'a Distribution_BucketOptions_Explicit {
1451 fn default() -> &'a Distribution_BucketOptions_Explicit {
1452 <Distribution_BucketOptions_Explicit as ::protobuf::Message>::default_instance()
1453 }
1454}
1455
1456impl Distribution_BucketOptions_Explicit {
1457 pub fn new() -> Distribution_BucketOptions_Explicit {
1458 ::std::default::Default::default()
1459 }
1460
1461 pub fn get_bounds(&self) -> &[f64] {
1465 &self.bounds
1466 }
1467 pub fn clear_bounds(&mut self) {
1468 self.bounds.clear();
1469 }
1470
1471 pub fn set_bounds(&mut self, v: ::std::vec::Vec<f64>) {
1473 self.bounds = v;
1474 }
1475
1476 pub fn mut_bounds(&mut self) -> &mut ::std::vec::Vec<f64> {
1478 &mut self.bounds
1479 }
1480
1481 pub fn take_bounds(&mut self) -> ::std::vec::Vec<f64> {
1483 ::std::mem::replace(&mut self.bounds, ::std::vec::Vec::new())
1484 }
1485}
1486
1487impl ::protobuf::Message for Distribution_BucketOptions_Explicit {
1488 fn is_initialized(&self) -> bool {
1489 true
1490 }
1491
1492 fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1493 while !is.eof()? {
1494 let (field_number, wire_type) = is.read_tag_unpack()?;
1495 match field_number {
1496 1 => {
1497 ::protobuf::rt::read_repeated_double_into(wire_type, is, &mut self.bounds)?;
1498 },
1499 _ => {
1500 ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1501 },
1502 };
1503 }
1504 ::std::result::Result::Ok(())
1505 }
1506
1507 #[allow(unused_variables)]
1509 fn compute_size(&self) -> u32 {
1510 let mut my_size = 0;
1511 my_size += 9 * self.bounds.len() as u32;
1512 my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1513 self.cached_size.set(my_size);
1514 my_size
1515 }
1516
1517 fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1518 for v in &self.bounds {
1519 os.write_double(1, *v)?;
1520 };
1521 os.write_unknown_fields(self.get_unknown_fields())?;
1522 ::std::result::Result::Ok(())
1523 }
1524
1525 fn get_cached_size(&self) -> u32 {
1526 self.cached_size.get()
1527 }
1528
1529 fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1530 &self.unknown_fields
1531 }
1532
1533 fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1534 &mut self.unknown_fields
1535 }
1536
1537 fn as_any(&self) -> &dyn (::std::any::Any) {
1538 self as &dyn (::std::any::Any)
1539 }
1540 fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1541 self as &mut dyn (::std::any::Any)
1542 }
1543 fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1544 self
1545 }
1546
1547 fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1548 Self::descriptor_static()
1549 }
1550
1551 fn new() -> Distribution_BucketOptions_Explicit {
1552 Distribution_BucketOptions_Explicit::new()
1553 }
1554
1555 fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1556 static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1557 descriptor.get(|| {
1558 let mut fields = ::std::vec::Vec::new();
1559 fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1560 "bounds",
1561 |m: &Distribution_BucketOptions_Explicit| { &m.bounds },
1562 |m: &mut Distribution_BucketOptions_Explicit| { &mut m.bounds },
1563 ));
1564 ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_BucketOptions_Explicit>(
1565 "Distribution.BucketOptions.Explicit",
1566 fields,
1567 file_descriptor_proto()
1568 )
1569 })
1570 }
1571
1572 fn default_instance() -> &'static Distribution_BucketOptions_Explicit {
1573 static instance: ::protobuf::rt::LazyV2<Distribution_BucketOptions_Explicit> = ::protobuf::rt::LazyV2::INIT;
1574 instance.get(Distribution_BucketOptions_Explicit::new)
1575 }
1576}
1577
1578impl ::protobuf::Clear for Distribution_BucketOptions_Explicit {
1579 fn clear(&mut self) {
1580 self.bounds.clear();
1581 self.unknown_fields.clear();
1582 }
1583}
1584
1585impl ::std::fmt::Debug for Distribution_BucketOptions_Explicit {
1586 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1587 ::protobuf::text_format::fmt(self, f)
1588 }
1589}
1590
1591impl ::protobuf::reflect::ProtobufValue for Distribution_BucketOptions_Explicit {
1592 fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1593 ::protobuf::reflect::ReflectValueRef::Message(self)
1594 }
1595}
1596
1597#[derive(PartialEq,Clone,Default)]
1598pub struct Distribution_Exemplar {
1599 pub value: f64,
1601 pub timestamp: ::protobuf::SingularPtrField<::protobuf::well_known_types::Timestamp>,
1602 pub attachments: ::protobuf::RepeatedField<::protobuf::well_known_types::Any>,
1603 pub unknown_fields: ::protobuf::UnknownFields,
1605 pub cached_size: ::protobuf::CachedSize,
1606}
1607
1608impl<'a> ::std::default::Default for &'a Distribution_Exemplar {
1609 fn default() -> &'a Distribution_Exemplar {
1610 <Distribution_Exemplar as ::protobuf::Message>::default_instance()
1611 }
1612}
1613
1614impl Distribution_Exemplar {
1615 pub fn new() -> Distribution_Exemplar {
1616 ::std::default::Default::default()
1617 }
1618
1619 pub fn get_value(&self) -> f64 {
1623 self.value
1624 }
1625 pub fn clear_value(&mut self) {
1626 self.value = 0.;
1627 }
1628
1629 pub fn set_value(&mut self, v: f64) {
1631 self.value = v;
1632 }
1633
1634 pub fn get_timestamp(&self) -> &::protobuf::well_known_types::Timestamp {
1638 self.timestamp.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Timestamp as ::protobuf::Message>::default_instance())
1639 }
1640 pub fn clear_timestamp(&mut self) {
1641 self.timestamp.clear();
1642 }
1643
1644 pub fn has_timestamp(&self) -> bool {
1645 self.timestamp.is_some()
1646 }
1647
1648 pub fn set_timestamp(&mut self, v: ::protobuf::well_known_types::Timestamp) {
1650 self.timestamp = ::protobuf::SingularPtrField::some(v);
1651 }
1652
1653 pub fn mut_timestamp(&mut self) -> &mut ::protobuf::well_known_types::Timestamp {
1656 if self.timestamp.is_none() {
1657 self.timestamp.set_default();
1658 }
1659 self.timestamp.as_mut().unwrap()
1660 }
1661
1662 pub fn take_timestamp(&mut self) -> ::protobuf::well_known_types::Timestamp {
1664 self.timestamp.take().unwrap_or_else(|| ::protobuf::well_known_types::Timestamp::new())
1665 }
1666
1667 pub fn get_attachments(&self) -> &[::protobuf::well_known_types::Any] {
1671 &self.attachments
1672 }
1673 pub fn clear_attachments(&mut self) {
1674 self.attachments.clear();
1675 }
1676
1677 pub fn set_attachments(&mut self, v: ::protobuf::RepeatedField<::protobuf::well_known_types::Any>) {
1679 self.attachments = v;
1680 }
1681
1682 pub fn mut_attachments(&mut self) -> &mut ::protobuf::RepeatedField<::protobuf::well_known_types::Any> {
1684 &mut self.attachments
1685 }
1686
1687 pub fn take_attachments(&mut self) -> ::protobuf::RepeatedField<::protobuf::well_known_types::Any> {
1689 ::std::mem::replace(&mut self.attachments, ::protobuf::RepeatedField::new())
1690 }
1691}
1692
1693impl ::protobuf::Message for Distribution_Exemplar {
1694 fn is_initialized(&self) -> bool {
1695 for v in &self.timestamp {
1696 if !v.is_initialized() {
1697 return false;
1698 }
1699 };
1700 for v in &self.attachments {
1701 if !v.is_initialized() {
1702 return false;
1703 }
1704 };
1705 true
1706 }
1707
1708 fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1709 while !is.eof()? {
1710 let (field_number, wire_type) = is.read_tag_unpack()?;
1711 match field_number {
1712 1 => {
1713 if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
1714 return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1715 }
1716 let tmp = is.read_double()?;
1717 self.value = tmp;
1718 },
1719 2 => {
1720 ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.timestamp)?;
1721 },
1722 3 => {
1723 ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.attachments)?;
1724 },
1725 _ => {
1726 ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1727 },
1728 };
1729 }
1730 ::std::result::Result::Ok(())
1731 }
1732
1733 #[allow(unused_variables)]
1735 fn compute_size(&self) -> u32 {
1736 let mut my_size = 0;
1737 if self.value != 0. {
1738 my_size += 9;
1739 }
1740 if let Some(ref v) = self.timestamp.as_ref() {
1741 let len = v.compute_size();
1742 my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1743 }
1744 for value in &self.attachments {
1745 let len = value.compute_size();
1746 my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1747 };
1748 my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1749 self.cached_size.set(my_size);
1750 my_size
1751 }
1752
1753 fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1754 if self.value != 0. {
1755 os.write_double(1, self.value)?;
1756 }
1757 if let Some(ref v) = self.timestamp.as_ref() {
1758 os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1759 os.write_raw_varint32(v.get_cached_size())?;
1760 v.write_to_with_cached_sizes(os)?;
1761 }
1762 for v in &self.attachments {
1763 os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1764 os.write_raw_varint32(v.get_cached_size())?;
1765 v.write_to_with_cached_sizes(os)?;
1766 };
1767 os.write_unknown_fields(self.get_unknown_fields())?;
1768 ::std::result::Result::Ok(())
1769 }
1770
1771 fn get_cached_size(&self) -> u32 {
1772 self.cached_size.get()
1773 }
1774
1775 fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1776 &self.unknown_fields
1777 }
1778
1779 fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1780 &mut self.unknown_fields
1781 }
1782
1783 fn as_any(&self) -> &dyn (::std::any::Any) {
1784 self as &dyn (::std::any::Any)
1785 }
1786 fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1787 self as &mut dyn (::std::any::Any)
1788 }
1789 fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1790 self
1791 }
1792
1793 fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1794 Self::descriptor_static()
1795 }
1796
1797 fn new() -> Distribution_Exemplar {
1798 Distribution_Exemplar::new()
1799 }
1800
1801 fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1802 static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1803 descriptor.get(|| {
1804 let mut fields = ::std::vec::Vec::new();
1805 fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
1806 "value",
1807 |m: &Distribution_Exemplar| { &m.value },
1808 |m: &mut Distribution_Exemplar| { &mut m.value },
1809 ));
1810 fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Timestamp>>(
1811 "timestamp",
1812 |m: &Distribution_Exemplar| { &m.timestamp },
1813 |m: &mut Distribution_Exemplar| { &mut m.timestamp },
1814 ));
1815 fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Any>>(
1816 "attachments",
1817 |m: &Distribution_Exemplar| { &m.attachments },
1818 |m: &mut Distribution_Exemplar| { &mut m.attachments },
1819 ));
1820 ::protobuf::reflect::MessageDescriptor::new_pb_name::<Distribution_Exemplar>(
1821 "Distribution.Exemplar",
1822 fields,
1823 file_descriptor_proto()
1824 )
1825 })
1826 }
1827
1828 fn default_instance() -> &'static Distribution_Exemplar {
1829 static instance: ::protobuf::rt::LazyV2<Distribution_Exemplar> = ::protobuf::rt::LazyV2::INIT;
1830 instance.get(Distribution_Exemplar::new)
1831 }
1832}
1833
1834impl ::protobuf::Clear for Distribution_Exemplar {
1835 fn clear(&mut self) {
1836 self.value = 0.;
1837 self.timestamp.clear();
1838 self.attachments.clear();
1839 self.unknown_fields.clear();
1840 }
1841}
1842
1843impl ::std::fmt::Debug for Distribution_Exemplar {
1844 fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1845 ::protobuf::text_format::fmt(self, f)
1846 }
1847}
1848
1849impl ::protobuf::reflect::ProtobufValue for Distribution_Exemplar {
1850 fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1851 ::protobuf::reflect::ReflectValueRef::Message(self)
1852 }
1853}
1854
1855static file_descriptor_proto_data: &'static [u8] = b"\
1856 \n\x1dgoogle/api/distribution.proto\x12\ngoogle.api\x1a\x19google/protob\
1857 uf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xda\x08\n\x0cDistr\
1858 ibution\x12\x14\n\x05count\x18\x01\x20\x01(\x03R\x05count\x12\x12\n\x04m\
1859 ean\x18\x02\x20\x01(\x01R\x04mean\x127\n\x18sum_of_squared_deviation\x18\
1860 \x03\x20\x01(\x01R\x15sumOfSquaredDeviation\x124\n\x05range\x18\x04\x20\
1861 \x01(\x0b2\x1e.google.api.Distribution.RangeR\x05range\x12M\n\x0ebucket_\
1862 options\x18\x06\x20\x01(\x0b2&.google.api.Distribution.BucketOptionsR\rb\
1863 ucketOptions\x12#\n\rbucket_counts\x18\x07\x20\x03(\x03R\x0cbucketCounts\
1864 \x12?\n\texemplars\x18\n\x20\x03(\x0b2!.google.api.Distribution.Exemplar\
1865 R\texemplars\x1a+\n\x05Range\x12\x10\n\x03min\x18\x01\x20\x01(\x01R\x03m\
1866 in\x12\x10\n\x03max\x18\x02\x20\x01(\x01R\x03max\x1a\xb9\x04\n\rBucketOp\
1867 tions\x12V\n\x0elinear_buckets\x18\x01\x20\x01(\x0b2-.google.api.Distrib\
1868 ution.BucketOptions.LinearH\0R\rlinearBuckets\x12e\n\x13exponential_buck\
1869 ets\x18\x02\x20\x01(\x0b22.google.api.Distribution.BucketOptions.Exponen\
1870 tialH\0R\x12exponentialBuckets\x12\\\n\x10explicit_buckets\x18\x03\x20\
1871 \x01(\x0b2/.google.api.Distribution.BucketOptions.ExplicitH\0R\x0fexplic\
1872 itBuckets\x1ad\n\x06Linear\x12,\n\x12num_finite_buckets\x18\x01\x20\x01(\
1873 \x05R\x10numFiniteBuckets\x12\x14\n\x05width\x18\x02\x20\x01(\x01R\x05wi\
1874 dth\x12\x16\n\x06offset\x18\x03\x20\x01(\x01R\x06offset\x1av\n\x0bExpone\
1875 ntial\x12,\n\x12num_finite_buckets\x18\x01\x20\x01(\x05R\x10numFiniteBuc\
1876 kets\x12#\n\rgrowth_factor\x18\x02\x20\x01(\x01R\x0cgrowthFactor\x12\x14\
1877 \n\x05scale\x18\x03\x20\x01(\x01R\x05scale\x1a\"\n\x08Explicit\x12\x16\n\
1878 \x06bounds\x18\x01\x20\x03(\x01R\x06boundsB\t\n\x07options\x1a\x92\x01\n\
1879 \x08Exemplar\x12\x14\n\x05value\x18\x01\x20\x01(\x01R\x05value\x128\n\tt\
1880 imestamp\x18\x02\x20\x01(\x0b2\x1a.google.protobuf.TimestampR\ttimestamp\
1881 \x126\n\x0battachments\x18\x03\x20\x03(\x0b2\x14.google.protobuf.AnyR\
1882 \x0battachmentsBq\n\x0ecom.google.apiB\x11DistributionProtoP\x01ZCgoogle\
1883 .golang.org/genproto/googleapis/api/distribution;distribution\xa2\x02\
1884 \x04GAPIJ\x85D\n\x07\x12\x05\x0e\0\xd4\x01\x01\n\xbc\x04\n\x01\x0c\x12\
1885 \x03\x0e\0\x122\xb1\x04\x20Copyright\x202023\x20Google\x20LLC\n\n\x20Lic\
1886 ensed\x20under\x20the\x20Apache\x20License,\x20Version\x202.0\x20(the\
1887 \x20\"License\");\n\x20you\x20may\x20not\x20use\x20this\x20file\x20excep\
1888 t\x20in\x20compliance\x20with\x20the\x20License.\n\x20You\x20may\x20obta\
1889 in\x20a\x20copy\x20of\x20the\x20License\x20at\n\n\x20\x20\x20\x20\x20htt\
1890 p://www.apache.org/licenses/LICENSE-2.0\n\n\x20Unless\x20required\x20by\
1891 \x20applicable\x20law\x20or\x20agreed\x20to\x20in\x20writing,\x20softwar\
1892 e\n\x20distributed\x20under\x20the\x20License\x20is\x20distributed\x20on\
1893 \x20an\x20\"AS\x20IS\"\x20BASIS,\n\x20WITHOUT\x20WARRANTIES\x20OR\x20CON\
1894 DITIONS\x20OF\x20ANY\x20KIND,\x20either\x20express\x20or\x20implied.\n\
1895 \x20See\x20the\x20License\x20for\x20the\x20specific\x20language\x20gover\
1896 ning\x20permissions\x20and\n\x20limitations\x20under\x20the\x20License.\
1897 \n\n\x08\n\x01\x02\x12\x03\x10\0\x13\n\t\n\x02\x03\0\x12\x03\x12\0#\n\t\
1898 \n\x02\x03\x01\x12\x03\x13\0)\n\x08\n\x01\x08\x12\x03\x15\0Z\n\t\n\x02\
1899 \x08\x0b\x12\x03\x15\0Z\n\x08\n\x01\x08\x12\x03\x16\0\"\n\t\n\x02\x08\n\
1900 \x12\x03\x16\0\"\n\x08\n\x01\x08\x12\x03\x17\02\n\t\n\x02\x08\x08\x12\
1901 \x03\x17\02\n\x08\n\x01\x08\x12\x03\x18\0'\n\t\n\x02\x08\x01\x12\x03\x18\
1902 \0'\n\x08\n\x01\x08\x12\x03\x19\0\"\n\t\n\x02\x08$\x12\x03\x19\0\"\n\xaa\
1903 \x06\n\x02\x04\0\x12\x05)\0\xd4\x01\x01\x1a\x9c\x06\x20`Distribution`\
1904 \x20contains\x20summary\x20statistics\x20for\x20a\x20population\x20of\
1905 \x20values.\x20It\n\x20optionally\x20contains\x20a\x20histogram\x20repre\
1906 senting\x20the\x20distribution\x20of\x20those\x20values\n\x20across\x20a\
1907 \x20set\x20of\x20buckets.\n\n\x20The\x20summary\x20statistics\x20are\x20\
1908 the\x20count,\x20mean,\x20sum\x20of\x20the\x20squared\x20deviation\x20fr\
1909 om\n\x20the\x20mean,\x20the\x20minimum,\x20and\x20the\x20maximum\x20of\
1910 \x20the\x20set\x20of\x20population\x20of\x20values.\n\x20The\x20histogra\
1911 m\x20is\x20based\x20on\x20a\x20sequence\x20of\x20buckets\x20and\x20gives\
1912 \x20a\x20count\x20of\x20values\n\x20that\x20fall\x20into\x20each\x20buck\
1913 et.\x20The\x20boundaries\x20of\x20the\x20buckets\x20are\x20given\x20eith\
1914 er\n\x20explicitly\x20or\x20by\x20formulas\x20for\x20buckets\x20of\x20fi\
1915 xed\x20or\x20exponentially\x20increasing\n\x20widths.\n\n\x20Although\
1916 \x20it\x20is\x20not\x20forbidden,\x20it\x20is\x20generally\x20a\x20bad\
1917 \x20idea\x20to\x20include\n\x20non-finite\x20values\x20(infinities\x20or\
1918 \x20NaNs)\x20in\x20the\x20population\x20of\x20values,\x20as\x20this\n\
1919 \x20will\x20render\x20the\x20`mean`\x20and\x20`sum_of_squared_deviation`\
1920 \x20fields\x20meaningless.\n\n\n\n\x03\x04\0\x01\x12\x03)\x08\x14\n3\n\
1921 \x04\x04\0\x03\0\x12\x04+\x021\x03\x1a%\x20The\x20range\x20of\x20the\x20\
1922 population\x20values.\n\n\x0c\n\x05\x04\0\x03\0\x01\x12\x03+\n\x0f\n6\n\
1923 \x06\x04\0\x03\0\x02\0\x12\x03-\x04\x13\x1a'\x20The\x20minimum\x20of\x20\
1924 the\x20population\x20values.\n\n\x0e\n\x07\x04\0\x03\0\x02\0\x05\x12\x03\
1925 -\x04\n\n\x0e\n\x07\x04\0\x03\0\x02\0\x01\x12\x03-\x0b\x0e\n\x0e\n\x07\
1926 \x04\0\x03\0\x02\0\x03\x12\x03-\x11\x12\n6\n\x06\x04\0\x03\0\x02\x01\x12\
1927 \x030\x04\x13\x1a'\x20The\x20maximum\x20of\x20the\x20population\x20value\
1928 s.\n\n\x0e\n\x07\x04\0\x03\0\x02\x01\x05\x12\x030\x04\n\n\x0e\n\x07\x04\
1929 \0\x03\0\x02\x01\x01\x12\x030\x0b\x0e\n\x0e\n\x07\x04\0\x03\0\x02\x01\
1930 \x03\x12\x030\x11\x12\n\xf3\x07\n\x04\x04\0\x03\x01\x12\x05B\x02\x88\x01\
1931 \x03\x1a\xe3\x07\x20`BucketOptions`\x20describes\x20the\x20bucket\x20bou\
1932 ndaries\x20used\x20to\x20create\x20a\x20histogram\n\x20for\x20the\x20dis\
1933 tribution.\x20The\x20buckets\x20can\x20be\x20in\x20a\x20linear\x20sequen\
1934 ce,\x20an\n\x20exponential\x20sequence,\x20or\x20each\x20bucket\x20can\
1935 \x20be\x20specified\x20explicitly.\n\x20`BucketOptions`\x20does\x20not\
1936 \x20include\x20the\x20number\x20of\x20values\x20in\x20each\x20bucket.\n\
1937 \n\x20A\x20bucket\x20has\x20an\x20inclusive\x20lower\x20bound\x20and\x20\
1938 exclusive\x20upper\x20bound\x20for\x20the\n\x20values\x20that\x20are\x20\
1939 counted\x20for\x20that\x20bucket.\x20The\x20upper\x20bound\x20of\x20a\
1940 \x20bucket\x20must\n\x20be\x20strictly\x20greater\x20than\x20the\x20lowe\
1941 r\x20bound.\x20The\x20sequence\x20of\x20N\x20buckets\x20for\x20a\n\x20di\
1942 stribution\x20consists\x20of\x20an\x20underflow\x20bucket\x20(number\x20\
1943 0),\x20zero\x20or\x20more\n\x20finite\x20buckets\x20(number\x201\x20thro\
1944 ugh\x20N\x20-\x202)\x20and\x20an\x20overflow\x20bucket\x20(number\x20N\
1945 \x20-\n\x201).\x20The\x20buckets\x20are\x20contiguous:\x20the\x20lower\
1946 \x20bound\x20of\x20bucket\x20i\x20(i\x20>\x200)\x20is\x20the\n\x20same\
1947 \x20as\x20the\x20upper\x20bound\x20of\x20bucket\x20i\x20-\x201.\x20The\
1948 \x20buckets\x20span\x20the\x20whole\x20range\n\x20of\x20finite\x20values\
1949 :\x20lower\x20bound\x20of\x20the\x20underflow\x20bucket\x20is\x20-infini\
1950 ty\x20and\x20the\n\x20upper\x20bound\x20of\x20the\x20overflow\x20bucket\
1951 \x20is\x20+infinity.\x20The\x20finite\x20buckets\x20are\n\x20so-called\
1952 \x20because\x20both\x20bounds\x20are\x20finite.\n\n\x0c\n\x05\x04\0\x03\
1953 \x01\x01\x12\x03B\n\x17\n\xaf\x03\n\x06\x04\0\x03\x01\x03\0\x12\x04M\x04\
1954 V\x05\x1a\x9e\x03\x20Specifies\x20a\x20linear\x20sequence\x20of\x20bucke\
1955 ts\x20that\x20all\x20have\x20the\x20same\x20width\n\x20(except\x20overfl\
1956 ow\x20and\x20underflow).\x20Each\x20bucket\x20represents\x20a\x20constan\
1957 t\n\x20absolute\x20uncertainty\x20on\x20the\x20specific\x20value\x20in\
1958 \x20the\x20bucket.\n\n\x20There\x20are\x20`num_finite_buckets\x20+\x202`\
1959 \x20(=\x20N)\x20buckets.\x20Bucket\x20`i`\x20has\x20the\n\x20following\
1960 \x20boundaries:\n\n\x20\x20\x20\x20Upper\x20bound\x20(0\x20<=\x20i\x20<\
1961 \x20N-1):\x20\x20\x20\x20\x20offset\x20+\x20(width\x20*\x20i).\n\n\x20\
1962 \x20\x20\x20Lower\x20bound\x20(1\x20<=\x20i\x20<\x20N):\x20\x20\x20\x20\
1963 \x20\x20\x20offset\x20+\x20(width\x20*\x20(i\x20-\x201)).\n\n\x0e\n\x07\
1964 \x04\0\x03\x01\x03\0\x01\x12\x03M\x0c\x12\n*\n\x08\x04\0\x03\x01\x03\0\
1965 \x02\0\x12\x03O\x06#\x1a\x19\x20Must\x20be\x20greater\x20than\x200.\n\n\
1966 \x10\n\t\x04\0\x03\x01\x03\0\x02\0\x05\x12\x03O\x06\x0b\n\x10\n\t\x04\0\
1967 \x03\x01\x03\0\x02\0\x01\x12\x03O\x0c\x1e\n\x10\n\t\x04\0\x03\x01\x03\0\
1968 \x02\0\x03\x12\x03O!\"\n*\n\x08\x04\0\x03\x01\x03\0\x02\x01\x12\x03R\x06\
1969 \x17\x1a\x19\x20Must\x20be\x20greater\x20than\x200.\n\n\x10\n\t\x04\0\
1970 \x03\x01\x03\0\x02\x01\x05\x12\x03R\x06\x0c\n\x10\n\t\x04\0\x03\x01\x03\
1971 \0\x02\x01\x01\x12\x03R\r\x12\n\x10\n\t\x04\0\x03\x01\x03\0\x02\x01\x03\
1972 \x12\x03R\x15\x16\n3\n\x08\x04\0\x03\x01\x03\0\x02\x02\x12\x03U\x06\x18\
1973 \x1a\"\x20Lower\x20bound\x20of\x20the\x20first\x20bucket.\n\n\x10\n\t\
1974 \x04\0\x03\x01\x03\0\x02\x02\x05\x12\x03U\x06\x0c\n\x10\n\t\x04\0\x03\
1975 \x01\x03\0\x02\x02\x01\x12\x03U\r\x13\n\x10\n\t\x04\0\x03\x01\x03\0\x02\
1976 \x02\x03\x12\x03U\x16\x17\n\xcb\x03\n\x06\x04\0\x03\x01\x03\x01\x12\x04b\
1977 \x04k\x05\x1a\xba\x03\x20Specifies\x20an\x20exponential\x20sequence\x20o\
1978 f\x20buckets\x20that\x20have\x20a\x20width\x20that\x20is\n\x20proportion\
1979 al\x20to\x20the\x20value\x20of\x20the\x20lower\x20bound.\x20Each\x20buck\
1980 et\x20represents\x20a\n\x20constant\x20relative\x20uncertainty\x20on\x20\
1981 a\x20specific\x20value\x20in\x20the\x20bucket.\n\n\x20There\x20are\x20`n\
1982 um_finite_buckets\x20+\x202`\x20(=\x20N)\x20buckets.\x20Bucket\x20`i`\
1983 \x20has\x20the\n\x20following\x20boundaries:\n\n\x20\x20\x20\x20Upper\
1984 \x20bound\x20(0\x20<=\x20i\x20<\x20N-1):\x20\x20\x20\x20\x20scale\x20*\
1985 \x20(growth_factor\x20^\x20i).\n\n\x20\x20\x20\x20Lower\x20bound\x20(1\
1986 \x20<=\x20i\x20<\x20N):\x20\x20\x20\x20\x20\x20\x20scale\x20*\x20(growth\
1987 _factor\x20^\x20(i\x20-\x201)).\n\n\x0e\n\x07\x04\0\x03\x01\x03\x01\x01\
1988 \x12\x03b\x0c\x17\n*\n\x08\x04\0\x03\x01\x03\x01\x02\0\x12\x03d\x06#\x1a\
1989 \x19\x20Must\x20be\x20greater\x20than\x200.\n\n\x10\n\t\x04\0\x03\x01\
1990 \x03\x01\x02\0\x05\x12\x03d\x06\x0b\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\
1991 \0\x01\x12\x03d\x0c\x1e\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\0\x03\x12\
1992 \x03d!\"\n*\n\x08\x04\0\x03\x01\x03\x01\x02\x01\x12\x03g\x06\x1f\x1a\x19\
1993 \x20Must\x20be\x20greater\x20than\x201.\n\n\x10\n\t\x04\0\x03\x01\x03\
1994 \x01\x02\x01\x05\x12\x03g\x06\x0c\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\
1995 \x01\x01\x12\x03g\r\x1a\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\x01\x03\x12\
1996 \x03g\x1d\x1e\n*\n\x08\x04\0\x03\x01\x03\x01\x02\x02\x12\x03j\x06\x17\
1997 \x1a\x19\x20Must\x20be\x20greater\x20than\x200.\n\n\x10\n\t\x04\0\x03\
1998 \x01\x03\x01\x02\x02\x05\x12\x03j\x06\x0c\n\x10\n\t\x04\0\x03\x01\x03\
1999 \x01\x02\x02\x01\x12\x03j\r\x12\n\x10\n\t\x04\0\x03\x01\x03\x01\x02\x02\
2000 \x03\x12\x03j\x15\x16\n\xd1\x03\n\x06\x04\0\x03\x01\x03\x02\x12\x04x\x04\
2001 {\x05\x1a\xc0\x03\x20Specifies\x20a\x20set\x20of\x20buckets\x20with\x20a\
2002 rbitrary\x20widths.\n\n\x20There\x20are\x20`size(bounds)\x20+\x201`\x20(\
2003 =\x20N)\x20buckets.\x20Bucket\x20`i`\x20has\x20the\x20following\n\x20bou\
2004 ndaries:\n\n\x20\x20\x20\x20Upper\x20bound\x20(0\x20<=\x20i\x20<\x20N-1)\
2005 :\x20\x20\x20\x20\x20bounds[i]\n\x20\x20\x20\x20Lower\x20bound\x20(1\x20\
2006 <=\x20i\x20<\x20N);\x20\x20\x20\x20\x20\x20\x20bounds[i\x20-\x201]\n\n\
2007 \x20The\x20`bounds`\x20field\x20must\x20contain\x20at\x20least\x20one\
2008 \x20element.\x20If\x20`bounds`\x20has\n\x20only\x20one\x20element,\x20th\
2009 en\x20there\x20are\x20no\x20finite\x20buckets,\x20and\x20that\x20single\
2010 \n\x20element\x20is\x20the\x20common\x20boundary\x20of\x20the\x20overflo\
2011 w\x20and\x20underflow\x20buckets.\n\n\x0e\n\x07\x04\0\x03\x01\x03\x02\
2012 \x01\x12\x03x\x0c\x14\n?\n\x08\x04\0\x03\x01\x03\x02\x02\0\x12\x03z\x06!\
2013 \x1a.\x20The\x20values\x20must\x20be\x20monotonically\x20increasing.\n\n\
2014 \x10\n\t\x04\0\x03\x01\x03\x02\x02\0\x04\x12\x03z\x06\x0e\n\x10\n\t\x04\
2015 \0\x03\x01\x03\x02\x02\0\x05\x12\x03z\x0f\x15\n\x10\n\t\x04\0\x03\x01\
2016 \x03\x02\x02\0\x01\x12\x03z\x16\x1c\n\x10\n\t\x04\0\x03\x01\x03\x02\x02\
2017 \0\x03\x12\x03z\x1f\x20\nA\n\x06\x04\0\x03\x01\x08\0\x12\x05~\x04\x87\
2018 \x01\x05\x1a0\x20Exactly\x20one\x20of\x20these\x20three\x20fields\x20mus\
2019 t\x20be\x20set.\n\n\x0e\n\x07\x04\0\x03\x01\x08\0\x01\x12\x03~\n\x11\n$\
2020 \n\x06\x04\0\x03\x01\x02\0\x12\x04\x80\x01\x06\x20\x1a\x14\x20The\x20lin\
2021 ear\x20bucket.\n\n\x0f\n\x07\x04\0\x03\x01\x02\0\x06\x12\x04\x80\x01\x06\
2022 \x0c\n\x0f\n\x07\x04\0\x03\x01\x02\0\x01\x12\x04\x80\x01\r\x1b\n\x0f\n\
2023 \x07\x04\0\x03\x01\x02\0\x03\x12\x04\x80\x01\x1e\x1f\n*\n\x06\x04\0\x03\
2024 \x01\x02\x01\x12\x04\x83\x01\x06*\x1a\x1a\x20The\x20exponential\x20bucke\
2025 ts.\n\n\x0f\n\x07\x04\0\x03\x01\x02\x01\x06\x12\x04\x83\x01\x06\x11\n\
2026 \x0f\n\x07\x04\0\x03\x01\x02\x01\x01\x12\x04\x83\x01\x12%\n\x0f\n\x07\
2027 \x04\0\x03\x01\x02\x01\x03\x12\x04\x83\x01()\n'\n\x06\x04\0\x03\x01\x02\
2028 \x02\x12\x04\x86\x01\x06$\x1a\x17\x20The\x20explicit\x20buckets.\n\n\x0f\
2029 \n\x07\x04\0\x03\x01\x02\x02\x06\x12\x04\x86\x01\x06\x0e\n\x0f\n\x07\x04\
2030 \0\x03\x01\x02\x02\x01\x12\x04\x86\x01\x0f\x1f\n\x0f\n\x07\x04\0\x03\x01\
2031 \x02\x02\x03\x12\x04\x86\x01\"#\n\xe9\x02\n\x04\x04\0\x03\x02\x12\x06\
2032 \x8f\x01\x02\xa3\x01\x03\x1a\xd8\x02\x20Exemplars\x20are\x20example\x20p\
2033 oints\x20that\x20may\x20be\x20used\x20to\x20annotate\x20aggregated\n\x20\
2034 distribution\x20values.\x20They\x20are\x20metadata\x20that\x20gives\x20i\
2035 nformation\x20about\x20a\n\x20particular\x20value\x20added\x20to\x20a\
2036 \x20Distribution\x20bucket,\x20such\x20as\x20a\x20trace\x20ID\x20that\n\
2037 \x20was\x20active\x20when\x20a\x20value\x20was\x20added.\x20They\x20may\
2038 \x20contain\x20further\x20information,\n\x20such\x20as\x20a\x20example\
2039 \x20values\x20and\x20timestamps,\x20origin,\x20etc.\n\n\r\n\x05\x04\0\
2040 \x03\x02\x01\x12\x04\x8f\x01\n\x12\nk\n\x06\x04\0\x03\x02\x02\0\x12\x04\
2041 \x92\x01\x04\x15\x1a[\x20Value\x20of\x20the\x20exemplar\x20point.\x20Thi\
2042 s\x20value\x20determines\x20to\x20which\x20bucket\x20the\n\x20exemplar\
2043 \x20belongs.\n\n\x0f\n\x07\x04\0\x03\x02\x02\0\x05\x12\x04\x92\x01\x04\n\
2044 \n\x0f\n\x07\x04\0\x03\x02\x02\0\x01\x12\x04\x92\x01\x0b\x10\n\x0f\n\x07\
2045 \x04\0\x03\x02\x02\0\x03\x12\x04\x92\x01\x13\x14\nE\n\x06\x04\0\x03\x02\
2046 \x02\x01\x12\x04\x95\x01\x04,\x1a5\x20The\x20observation\x20(sampling)\
2047 \x20time\x20of\x20the\x20above\x20value.\n\n\x0f\n\x07\x04\0\x03\x02\x02\
2048 \x01\x06\x12\x04\x95\x01\x04\x1d\n\x0f\n\x07\x04\0\x03\x02\x02\x01\x01\
2049 \x12\x04\x95\x01\x1e'\n\x0f\n\x07\x04\0\x03\x02\x02\x01\x03\x12\x04\x95\
2050 \x01*+\n\xb4\x03\n\x06\x04\0\x03\x02\x02\x02\x12\x04\xa2\x01\x041\x1a\
2051 \xa3\x03\x20Contextual\x20information\x20about\x20the\x20example\x20valu\
2052 e.\x20Examples\x20are:\n\n\x20\x20\x20Trace:\x20type.googleapis.com/goog\
2053 le.monitoring.v3.SpanContext\n\n\x20\x20\x20Literal\x20string:\x20type.g\
2054 oogleapis.com/google.protobuf.StringValue\n\n\x20\x20\x20Labels\x20dropp\
2055 ed\x20during\x20aggregation:\n\x20\x20\x20\x20\x20type.googleapis.com/go\
2056 ogle.monitoring.v3.DroppedLabels\n\n\x20There\x20may\x20be\x20only\x20a\
2057 \x20single\x20attachment\x20of\x20any\x20given\x20message\x20type\x20in\
2058 \x20a\n\x20single\x20exemplar,\x20and\x20this\x20is\x20enforced\x20by\
2059 \x20the\x20system.\n\n\x0f\n\x07\x04\0\x03\x02\x02\x02\x04\x12\x04\xa2\
2060 \x01\x04\x0c\n\x0f\n\x07\x04\0\x03\x02\x02\x02\x06\x12\x04\xa2\x01\r\x20\
2061 \n\x0f\n\x07\x04\0\x03\x02\x02\x02\x01\x12\x04\xa2\x01!,\n\x0f\n\x07\x04\
2062 \0\x03\x02\x02\x02\x03\x12\x04\xa2\x01/0\n\xab\x01\n\x04\x04\0\x02\0\x12\
2063 \x04\xa8\x01\x02\x12\x1a\x9c\x01\x20The\x20number\x20of\x20values\x20in\
2064 \x20the\x20population.\x20Must\x20be\x20non-negative.\x20This\x20value\n\
2065 \x20must\x20equal\x20the\x20sum\x20of\x20the\x20values\x20in\x20`bucket_\
2066 counts`\x20if\x20a\x20histogram\x20is\n\x20provided.\n\n\r\n\x05\x04\0\
2067 \x02\0\x05\x12\x04\xa8\x01\x02\x07\n\r\n\x05\x04\0\x02\0\x01\x12\x04\xa8\
2068 \x01\x08\r\n\r\n\x05\x04\0\x02\0\x03\x12\x04\xa8\x01\x10\x11\nv\n\x04\
2069 \x04\0\x02\x01\x12\x04\xac\x01\x02\x12\x1ah\x20The\x20arithmetic\x20mean\
2070 \x20of\x20the\x20values\x20in\x20the\x20population.\x20If\x20`count`\x20\
2071 is\x20zero\n\x20then\x20this\x20field\x20must\x20be\x20zero.\n\n\r\n\x05\
2072 \x04\0\x02\x01\x05\x12\x04\xac\x01\x02\x08\n\r\n\x05\x04\0\x02\x01\x01\
2073 \x12\x04\xac\x01\t\r\n\r\n\x05\x04\0\x02\x01\x03\x12\x04\xac\x01\x10\x11\
2074 \n\xd8\x02\n\x04\x04\0\x02\x02\x12\x04\xb7\x01\x02&\x1a\xc9\x02\x20The\
2075 \x20sum\x20of\x20squared\x20deviations\x20from\x20the\x20mean\x20of\x20t\
2076 he\x20values\x20in\x20the\n\x20population.\x20For\x20values\x20x_i\x20th\
2077 is\x20is:\n\n\x20\x20\x20\x20\x20Sum[i=1..n]((x_i\x20-\x20mean)^2)\n\n\
2078 \x20Knuth,\x20\"The\x20Art\x20of\x20Computer\x20Programming\",\x20Vol.\
2079 \x202,\x20page\x20232,\x203rd\x20edition\n\x20describes\x20Welford's\x20\
2080 method\x20for\x20accumulating\x20this\x20sum\x20in\x20one\x20pass.\n\n\
2081 \x20If\x20`count`\x20is\x20zero\x20then\x20this\x20field\x20must\x20be\
2082 \x20zero.\n\n\r\n\x05\x04\0\x02\x02\x05\x12\x04\xb7\x01\x02\x08\n\r\n\
2083 \x05\x04\0\x02\x02\x01\x12\x04\xb7\x01\t!\n\r\n\x05\x04\0\x02\x02\x03\
2084 \x12\x04\xb7\x01$%\n\x81\x01\n\x04\x04\0\x02\x03\x12\x04\xbb\x01\x02\x12\
2085 \x1as\x20If\x20specified,\x20contains\x20the\x20range\x20of\x20the\x20po\
2086 pulation\x20values.\x20The\x20field\n\x20must\x20not\x20be\x20present\
2087 \x20if\x20the\x20`count`\x20is\x20zero.\n\n\r\n\x05\x04\0\x02\x03\x06\
2088 \x12\x04\xbb\x01\x02\x07\n\r\n\x05\x04\0\x02\x03\x01\x12\x04\xbb\x01\x08\
2089 \r\n\r\n\x05\x04\0\x02\x03\x03\x12\x04\xbb\x01\x10\x11\n\x81\x01\n\x04\
2090 \x04\0\x02\x04\x12\x04\xbf\x01\x02#\x1as\x20Defines\x20the\x20histogram\
2091 \x20bucket\x20boundaries.\x20If\x20the\x20distribution\x20does\x20not\n\
2092 \x20contain\x20a\x20histogram,\x20then\x20omit\x20this\x20field.\n\n\r\n\
2093 \x05\x04\0\x02\x04\x06\x12\x04\xbf\x01\x02\x0f\n\r\n\x05\x04\0\x02\x04\
2094 \x01\x12\x04\xbf\x01\x10\x1e\n\r\n\x05\x04\0\x02\x04\x03\x12\x04\xbf\x01\
2095 !\"\n\xe7\x06\n\x04\x04\0\x02\x05\x12\x04\xd0\x01\x02#\x1a\xd8\x06\x20Th\
2096 e\x20number\x20of\x20values\x20in\x20each\x20bucket\x20of\x20the\x20hist\
2097 ogram,\x20as\x20described\x20in\n\x20`bucket_options`.\x20If\x20the\x20d\
2098 istribution\x20does\x20not\x20have\x20a\x20histogram,\x20then\x20omit\n\
2099 \x20this\x20field.\x20If\x20there\x20is\x20a\x20histogram,\x20then\x20th\
2100 e\x20sum\x20of\x20the\x20values\x20in\n\x20`bucket_counts`\x20must\x20eq\
2101 ual\x20the\x20value\x20in\x20the\x20`count`\x20field\x20of\x20the\n\x20d\
2102 istribution.\n\n\x20If\x20present,\x20`bucket_counts`\x20should\x20conta\
2103 in\x20N\x20values,\x20where\x20N\x20is\x20the\x20number\n\x20of\x20bucke\
2104 ts\x20specified\x20in\x20`bucket_options`.\x20If\x20you\x20supply\x20few\
2105 er\x20than\x20N\n\x20values,\x20the\x20remaining\x20values\x20are\x20ass\
2106 umed\x20to\x20be\x200.\n\n\x20The\x20order\x20of\x20the\x20values\x20in\
2107 \x20`bucket_counts`\x20follows\x20the\x20bucket\x20numbering\n\x20scheme\
2108 s\x20described\x20for\x20the\x20three\x20bucket\x20types.\x20The\x20firs\
2109 t\x20value\x20must\x20be\x20the\n\x20count\x20for\x20the\x20underflow\
2110 \x20bucket\x20(number\x200).\x20The\x20next\x20N-2\x20values\x20are\x20t\
2111 he\n\x20counts\x20for\x20the\x20finite\x20buckets\x20(number\x201\x20thr\
2112 ough\x20N-2).\x20The\x20N'th\x20value\x20in\n\x20`bucket_counts`\x20is\
2113 \x20the\x20count\x20for\x20the\x20overflow\x20bucket\x20(number\x20N-1).\
2114 \n\n\r\n\x05\x04\0\x02\x05\x04\x12\x04\xd0\x01\x02\n\n\r\n\x05\x04\0\x02\
2115 \x05\x05\x12\x04\xd0\x01\x0b\x10\n\r\n\x05\x04\0\x02\x05\x01\x12\x04\xd0\
2116 \x01\x11\x1e\n\r\n\x05\x04\0\x02\x05\x03\x12\x04\xd0\x01!\"\n=\n\x04\x04\
2117 \0\x02\x06\x12\x04\xd3\x01\x02#\x1a/\x20Must\x20be\x20in\x20increasing\
2118 \x20order\x20of\x20`value`\x20field.\n\n\r\n\x05\x04\0\x02\x06\x04\x12\
2119 \x04\xd3\x01\x02\n\n\r\n\x05\x04\0\x02\x06\x06\x12\x04\xd3\x01\x0b\x13\n\
2120 \r\n\x05\x04\0\x02\x06\x01\x12\x04\xd3\x01\x14\x1d\n\r\n\x05\x04\0\x02\
2121 \x06\x03\x12\x04\xd3\x01\x20\"b\x06proto3\
2122";
2123
2124static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
2125
2126fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
2127 ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
2128}
2129
2130pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
2131 file_descriptor_proto_lazy.get(|| {
2132 parse_descriptor_proto()
2133 })
2134}