//
//Сервис реализует функционал управления измерениями

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.30.0
// 	protoc        v4.23.1
// source: keyapis/telemetry_metric/v1/keyapis_telemetry_metric_measurement_v1.proto

package keyapis_telemetry_metric_v1

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// Справочник типов значений сортировки
type MeasurementPaging_OrderByType int32

const (
	// Значение не указано
	MeasurementPaging_ORDER_BY_TYPE_UNKNOWN MeasurementPaging_OrderByType = 0
	// По идентификатору индикатора
	MeasurementPaging_INDICATOR_ID MeasurementPaging_OrderByType = 1
	// По дате synced_at
	MeasurementPaging_SYNCED_AT MeasurementPaging_OrderByType = 2
)

// Enum value maps for MeasurementPaging_OrderByType.
var (
	MeasurementPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "INDICATOR_ID",
		2: "SYNCED_AT",
	}
	MeasurementPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"INDICATOR_ID":          1,
		"SYNCED_AT":             2,
	}
)

func (x MeasurementPaging_OrderByType) Enum() *MeasurementPaging_OrderByType {
	p := new(MeasurementPaging_OrderByType)
	*p = x
	return p
}

func (x MeasurementPaging_OrderByType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (MeasurementPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[0].Descriptor()
}

func (MeasurementPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[0]
}

func (x MeasurementPaging_OrderByType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use MeasurementPaging_OrderByType.Descriptor instead.
func (MeasurementPaging_OrderByType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{9, 0}
}

// Справочник типов направлений сортировки
type MeasurementPaging_DirectionType int32

const (
	// Значение не указано
	MeasurementPaging_DIRECTION_TYPE_UNKNOWN MeasurementPaging_DirectionType = 0
	// От большего к меньшему
	MeasurementPaging_DESC MeasurementPaging_DirectionType = 1
	// От меньшего к большему
	MeasurementPaging_ASC MeasurementPaging_DirectionType = 2
)

// Enum value maps for MeasurementPaging_DirectionType.
var (
	MeasurementPaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	MeasurementPaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

func (x MeasurementPaging_DirectionType) Enum() *MeasurementPaging_DirectionType {
	p := new(MeasurementPaging_DirectionType)
	*p = x
	return p
}

func (x MeasurementPaging_DirectionType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (MeasurementPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[1].Descriptor()
}

func (MeasurementPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[1]
}

func (x MeasurementPaging_DirectionType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use MeasurementPaging_DirectionType.Descriptor instead.
func (MeasurementPaging_DirectionType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{9, 1}
}

// Справочник типов устройств
type Measurement_DeviceType int32

const (
	// Значение не указано
	Measurement_DEVICE_TYPE_UNKNOWN Measurement_DeviceType = 0
	// Коммуникационный модуль
	Measurement_HUB Measurement_DeviceType = 1
	// Счетчик импульсов - регистратор
	Measurement_PULSE_COUNTER_RECORDER Measurement_DeviceType = 2
	// Счетчик импульсов - регистратор LoRaWAN
	Measurement_PULSE_COUNTER_RECORDER_LR Measurement_DeviceType = 3
	// Прибор учета расхода коммунальных услуг
	Measurement_METERING_DEVICE Measurement_DeviceType = 4
	// Конвертер интерфейсов
	Measurement_INTERFACE_CONVERTER Measurement_DeviceType = 5
	// M-BUS концентратор
	Measurement_M_BUS_HUB Measurement_DeviceType = 6
	// Модуль связи LoRaWAN
	Measurement_COMMUNICATION_MODULE_LR Measurement_DeviceType = 7
	// Базовая станция LoRaWAN
	Measurement_BASE_LR Measurement_DeviceType = 8
)

// Enum value maps for Measurement_DeviceType.
var (
	Measurement_DeviceType_name = map[int32]string{
		0: "DEVICE_TYPE_UNKNOWN",
		1: "HUB",
		2: "PULSE_COUNTER_RECORDER",
		3: "PULSE_COUNTER_RECORDER_LR",
		4: "METERING_DEVICE",
		5: "INTERFACE_CONVERTER",
		6: "M_BUS_HUB",
		7: "COMMUNICATION_MODULE_LR",
		8: "BASE_LR",
	}
	Measurement_DeviceType_value = map[string]int32{
		"DEVICE_TYPE_UNKNOWN":       0,
		"HUB":                       1,
		"PULSE_COUNTER_RECORDER":    2,
		"PULSE_COUNTER_RECORDER_LR": 3,
		"METERING_DEVICE":           4,
		"INTERFACE_CONVERTER":       5,
		"M_BUS_HUB":                 6,
		"COMMUNICATION_MODULE_LR":   7,
		"BASE_LR":                   8,
	}
)

func (x Measurement_DeviceType) Enum() *Measurement_DeviceType {
	p := new(Measurement_DeviceType)
	*p = x
	return p
}

func (x Measurement_DeviceType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Measurement_DeviceType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[2].Descriptor()
}

func (Measurement_DeviceType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[2]
}

func (x Measurement_DeviceType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Measurement_DeviceType.Descriptor instead.
func (Measurement_DeviceType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{14, 0}
}

// Справочние типов энергоресурсов
type Measurement_MetricType int32

const (
	// Значение не указано
	Measurement_METRIC_TYPE_UNKNOWN Measurement_MetricType = 0
	// Горячая вода
	Measurement_HOT_WATER Measurement_MetricType = 1
	// Холодная вода
	Measurement_COLD_WATER Measurement_MetricType = 2
	// Теплоэнергия
	Measurement_HEAT Measurement_MetricType = 3
	// Газ
	Measurement_GAS Measurement_MetricType = 4
	// Электроэнергия
	Measurement_ELECTRICITY Measurement_MetricType = 5
)

// Enum value maps for Measurement_MetricType.
var (
	Measurement_MetricType_name = map[int32]string{
		0: "METRIC_TYPE_UNKNOWN",
		1: "HOT_WATER",
		2: "COLD_WATER",
		3: "HEAT",
		4: "GAS",
		5: "ELECTRICITY",
	}
	Measurement_MetricType_value = map[string]int32{
		"METRIC_TYPE_UNKNOWN": 0,
		"HOT_WATER":           1,
		"COLD_WATER":          2,
		"HEAT":                3,
		"GAS":                 4,
		"ELECTRICITY":         5,
	}
)

func (x Measurement_MetricType) Enum() *Measurement_MetricType {
	p := new(Measurement_MetricType)
	*p = x
	return p
}

func (x Measurement_MetricType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Measurement_MetricType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[3].Descriptor()
}

func (Measurement_MetricType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[3]
}

func (x Measurement_MetricType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Measurement_MetricType.Descriptor instead.
func (Measurement_MetricType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{14, 1}
}

// Справочник типов единиц измерений
type Measurement_UnitType int32

const (
	// Значение не указано
	Measurement_UNIT_TYPE_UNKNOWN Measurement_UnitType = 0
	// Процент
	Measurement_PERCENT Measurement_UnitType = 1
	// Градус по Цельсию
	Measurement_C Measurement_UnitType = 2
	// Ватт
	Measurement_WT Measurement_UnitType = 3
	// Гигакалория
	Measurement_GKAL Measurement_UnitType = 4
	// Количество
	Measurement_VALUE Measurement_UnitType = 5
	// Киловaтт-час
	Measurement_KWH Measurement_UnitType = 6
	// Килограмм на квадратный сантиметр
	Measurement_KG_CM2 Measurement_UnitType = 7
	// Килограмм-сила на квадратный сантиметр
	Measurement_KGF_CM2 Measurement_UnitType = 8
	// Кубический метр
	Measurement_M3 Measurement_UnitType = 9
	// Кубический метр в час
	Measurement_M3_H Measurement_UnitType = 10
	// Мегапаскаль
	Measurement_MPA Measurement_UnitType = 11
	// Миллисекунда
	Measurement_MS Measurement_UnitType = 12
	// Флаг состояния
	Measurement_BOOLEAN Measurement_UnitType = 13
	// Тонна
	Measurement_T Measurement_UnitType = 14
	// Тонна в час
	Measurement_T_H Measurement_UnitType = 15
	// Час
	Measurement_H Measurement_UnitType = 16
	// Безразмерная величина
	Measurement_NON_MEASURABLE Measurement_UnitType = 17
	// Импульс
	Measurement_IMP Measurement_UnitType = 18
	// Джоуль
	Measurement_J Measurement_UnitType = 19
	// Килоджоуль
	Measurement_KJ Measurement_UnitType = 20
	// Гигаджоуль
	Measurement_GJ Measurement_UnitType = 21
	// Ватт-час
	Measurement_WTH Measurement_UnitType = 22
	// Киловатт
	Measurement_KWT Measurement_UnitType = 23
	// Минута
	Measurement_MIN Measurement_UnitType = 24
	// Секунда
	Measurement_S Measurement_UnitType = 25
)

// Enum value maps for Measurement_UnitType.
var (
	Measurement_UnitType_name = map[int32]string{
		0:  "UNIT_TYPE_UNKNOWN",
		1:  "PERCENT",
		2:  "C",
		3:  "WT",
		4:  "GKAL",
		5:  "VALUE",
		6:  "KWH",
		7:  "KG_CM2",
		8:  "KGF_CM2",
		9:  "M3",
		10: "M3_H",
		11: "MPA",
		12: "MS",
		13: "BOOLEAN",
		14: "T",
		15: "T_H",
		16: "H",
		17: "NON_MEASURABLE",
		18: "IMP",
		19: "J",
		20: "KJ",
		21: "GJ",
		22: "WTH",
		23: "KWT",
		24: "MIN",
		25: "S",
	}
	Measurement_UnitType_value = map[string]int32{
		"UNIT_TYPE_UNKNOWN": 0,
		"PERCENT":           1,
		"C":                 2,
		"WT":                3,
		"GKAL":              4,
		"VALUE":             5,
		"KWH":               6,
		"KG_CM2":            7,
		"KGF_CM2":           8,
		"M3":                9,
		"M3_H":              10,
		"MPA":               11,
		"MS":                12,
		"BOOLEAN":           13,
		"T":                 14,
		"T_H":               15,
		"H":                 16,
		"NON_MEASURABLE":    17,
		"IMP":               18,
		"J":                 19,
		"KJ":                20,
		"GJ":                21,
		"WTH":               22,
		"KWT":               23,
		"MIN":               24,
		"S":                 25,
	}
)

func (x Measurement_UnitType) Enum() *Measurement_UnitType {
	p := new(Measurement_UnitType)
	*p = x
	return p
}

func (x Measurement_UnitType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Measurement_UnitType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[4].Descriptor()
}

func (Measurement_UnitType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes[4]
}

func (x Measurement_UnitType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Measurement_UnitType.Descriptor instead.
func (Measurement_UnitType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{14, 2}
}

// Запрос получения списка измерений
type GetMeasurementListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Параметры фильтрации измерений
	Filter *MeasurementFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения измерений на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetMeasurementListRequest_Paging
	Pagination isGetMeasurementListRequest_Pagination `protobuf_oneof:"pagination"`
}

func (x *GetMeasurementListRequest) Reset() {
	*x = GetMeasurementListRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMeasurementListRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMeasurementListRequest) ProtoMessage() {}

func (x *GetMeasurementListRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMeasurementListRequest.ProtoReflect.Descriptor instead.
func (*GetMeasurementListRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{0}
}

func (x *GetMeasurementListRequest) GetFilter() *MeasurementFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetMeasurementListRequest) GetPagination() isGetMeasurementListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetMeasurementListRequest) GetPaging() *MeasurementPaging {
	if x, ok := x.GetPagination().(*GetMeasurementListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetMeasurementListRequest_Pagination interface {
	isGetMeasurementListRequest_Pagination()
}

type GetMeasurementListRequest_Paging struct {
	// Параметры пагинации по измерениям
	Paging *MeasurementPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetMeasurementListRequest_Paging) isGetMeasurementListRequest_Pagination() {}

// Запрос получения списка преобразованных измерений
type GetMeasurementConvertedListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Параметры фильтрации измерений
	Filter *MeasurementFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения измерений на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetMeasurementConvertedListRequest_Paging
	Pagination isGetMeasurementConvertedListRequest_Pagination `protobuf_oneof:"pagination"`
}

func (x *GetMeasurementConvertedListRequest) Reset() {
	*x = GetMeasurementConvertedListRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMeasurementConvertedListRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMeasurementConvertedListRequest) ProtoMessage() {}

func (x *GetMeasurementConvertedListRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMeasurementConvertedListRequest.ProtoReflect.Descriptor instead.
func (*GetMeasurementConvertedListRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{1}
}

func (x *GetMeasurementConvertedListRequest) GetFilter() *MeasurementFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetMeasurementConvertedListRequest) GetPagination() isGetMeasurementConvertedListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetMeasurementConvertedListRequest) GetPaging() *MeasurementPaging {
	if x, ok := x.GetPagination().(*GetMeasurementConvertedListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetMeasurementConvertedListRequest_Pagination interface {
	isGetMeasurementConvertedListRequest_Pagination()
}

type GetMeasurementConvertedListRequest_Paging struct {
	// Параметры пагинации по измерениям
	Paging *MeasurementPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetMeasurementConvertedListRequest_Paging) isGetMeasurementConvertedListRequest_Pagination() {}

// Ответ на запрос получения списка измерений
type GetMeasurementListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetMeasurementListResponse_Data
	Type isGetMeasurementListResponse_Type `protobuf_oneof:"type"`
}

func (x *GetMeasurementListResponse) Reset() {
	*x = GetMeasurementListResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMeasurementListResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMeasurementListResponse) ProtoMessage() {}

func (x *GetMeasurementListResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMeasurementListResponse.ProtoReflect.Descriptor instead.
func (*GetMeasurementListResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{2}
}

func (m *GetMeasurementListResponse) GetType() isGetMeasurementListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetMeasurementListResponse) GetData() *Measurement {
	if x, ok := x.GetType().(*GetMeasurementListResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetMeasurementListResponse_Type interface {
	isGetMeasurementListResponse_Type()
}

type GetMeasurementListResponse_Data struct {
	// Значение измерения
	Data *Measurement `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetMeasurementListResponse_Data) isGetMeasurementListResponse_Type() {}

// Ответ на запрос получения списка преобразованных измерений
type GetMeasurementConvertedListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetMeasurementConvertedListResponse_Data
	Type isGetMeasurementConvertedListResponse_Type `protobuf_oneof:"type"`
}

func (x *GetMeasurementConvertedListResponse) Reset() {
	*x = GetMeasurementConvertedListResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMeasurementConvertedListResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMeasurementConvertedListResponse) ProtoMessage() {}

func (x *GetMeasurementConvertedListResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMeasurementConvertedListResponse.ProtoReflect.Descriptor instead.
func (*GetMeasurementConvertedListResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{3}
}

func (m *GetMeasurementConvertedListResponse) GetType() isGetMeasurementConvertedListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetMeasurementConvertedListResponse) GetData() *Measurement {
	if x, ok := x.GetType().(*GetMeasurementConvertedListResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetMeasurementConvertedListResponse_Type interface {
	isGetMeasurementConvertedListResponse_Type()
}

type GetMeasurementConvertedListResponse_Data struct {
	// Значение измерения
	Data *Measurement `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetMeasurementConvertedListResponse_Data) isGetMeasurementConvertedListResponse_Type() {}

// Фильтр измерений.
// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
// При передаче нескольких разных параметров фильтра они работают в выборке через И
type MeasurementFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По ФИАСам
	FiasIds []string `protobuf:"bytes,1,rep,name=fias_ids,json=fiasIds,proto3" json:"fias_ids,omitempty"`
	// По идентификаторам
	DeviceIds []int32 `protobuf:"varint,2,rep,packed,name=device_ids,json=deviceIds,proto3" json:"device_ids,omitempty"`
	// По идентификаторам индикаторов
	IndicatorIds []int32 `protobuf:"varint,3,rep,packed,name=indicator_ids,json=indicatorIds,proto3" json:"indicator_ids,omitempty"`
	// От даты синхронизации включительно (>=)
	BeginSyncedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=begin_synced_at,json=beginSyncedAt,proto3" json:"begin_synced_at,omitempty"`
	// До даты синхронизации (<)
	EndSyncedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=end_synced_at,json=endSyncedAt,proto3" json:"end_synced_at,omitempty"`
	// По моделям устройств
	DeviceModels []string `protobuf:"bytes,6,rep,name=device_models,json=deviceModels,proto3" json:"device_models,omitempty"`
	// По типам устройств
	DeviceTypes []Measurement_DeviceType `protobuf:"varint,7,rep,packed,name=device_types,json=deviceTypes,proto3,enum=keyapis.telemetry_metric.v1.Measurement_DeviceType" json:"device_types,omitempty"`
	// По типам измерений
	MetricTypes []Measurement_MetricType `protobuf:"varint,8,rep,packed,name=metric_types,json=metricTypes,proto3,enum=keyapis.telemetry_metric.v1.Measurement_MetricType" json:"metric_types,omitempty"`
	// Ограничение результатов только пограничными значениями для периода.
	// Если border_measurements_only=null возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).
	// Если border_measurements_only=falsе возвращаем измерения по условиям фильтра, уникальные по (indicator_id, synced_at).
	// Если заданы border_measurements_only=true, begin_synced_at, end_synced_at возвращаем два измерения ближайшие к границам периода.
	// Если заданы border_measurements_only=true, и не задана end_synced_at возвращаем одно измерение ближайшее к begin_synced_at.
	// Если заданы border_measurements_only=true, и не задана begin_synced_at возвращаем одно измерение ближайшее к end_synced_at.
	// Если заданы border_measurements_only=true и не заданы begin_synced_at и end_synced_at возвращаем ошибку валидации параметров
	IsBorderMeasurementsOnly *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=is_border_measurements_only,json=isBorderMeasurementsOnly,proto3" json:"is_border_measurements_only,omitempty"`
}

func (x *MeasurementFilter) Reset() {
	*x = MeasurementFilter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MeasurementFilter) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MeasurementFilter) ProtoMessage() {}

func (x *MeasurementFilter) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MeasurementFilter.ProtoReflect.Descriptor instead.
func (*MeasurementFilter) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{4}
}

func (x *MeasurementFilter) GetFiasIds() []string {
	if x != nil {
		return x.FiasIds
	}
	return nil
}

func (x *MeasurementFilter) GetDeviceIds() []int32 {
	if x != nil {
		return x.DeviceIds
	}
	return nil
}

func (x *MeasurementFilter) GetIndicatorIds() []int32 {
	if x != nil {
		return x.IndicatorIds
	}
	return nil
}

func (x *MeasurementFilter) GetBeginSyncedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.BeginSyncedAt
	}
	return nil
}

func (x *MeasurementFilter) GetEndSyncedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.EndSyncedAt
	}
	return nil
}

func (x *MeasurementFilter) GetDeviceModels() []string {
	if x != nil {
		return x.DeviceModels
	}
	return nil
}

func (x *MeasurementFilter) GetDeviceTypes() []Measurement_DeviceType {
	if x != nil {
		return x.DeviceTypes
	}
	return nil
}

func (x *MeasurementFilter) GetMetricTypes() []Measurement_MetricType {
	if x != nil {
		return x.MetricTypes
	}
	return nil
}

func (x *MeasurementFilter) GetIsBorderMeasurementsOnly() *wrapperspb.BoolValue {
	if x != nil {
		return x.IsBorderMeasurementsOnly
	}
	return nil
}

// Запрос получения количества измерений
type GetMeasurementCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Параметры фильтрации измерений
	Filter *MeasurementFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

func (x *GetMeasurementCountRequest) Reset() {
	*x = GetMeasurementCountRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMeasurementCountRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMeasurementCountRequest) ProtoMessage() {}

func (x *GetMeasurementCountRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMeasurementCountRequest.ProtoReflect.Descriptor instead.
func (*GetMeasurementCountRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{5}
}

func (x *GetMeasurementCountRequest) GetFilter() *MeasurementFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Запрос получения количества преобразованных измерений
type GetMeasurementConvertedCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Параметры фильтрации измерений
	Filter *MeasurementFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

func (x *GetMeasurementConvertedCountRequest) Reset() {
	*x = GetMeasurementConvertedCountRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMeasurementConvertedCountRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMeasurementConvertedCountRequest) ProtoMessage() {}

func (x *GetMeasurementConvertedCountRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMeasurementConvertedCountRequest.ProtoReflect.Descriptor instead.
func (*GetMeasurementConvertedCountRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{6}
}

func (x *GetMeasurementConvertedCountRequest) GetFilter() *MeasurementFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Ответ на запрос получения количества измерений
type GetMeasurementCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetMeasurementCountResponse_Data
	Type isGetMeasurementCountResponse_Type `protobuf_oneof:"type"`
}

func (x *GetMeasurementCountResponse) Reset() {
	*x = GetMeasurementCountResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMeasurementCountResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMeasurementCountResponse) ProtoMessage() {}

func (x *GetMeasurementCountResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMeasurementCountResponse.ProtoReflect.Descriptor instead.
func (*GetMeasurementCountResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{7}
}

func (m *GetMeasurementCountResponse) GetType() isGetMeasurementCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetMeasurementCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetMeasurementCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

type isGetMeasurementCountResponse_Type interface {
	isGetMeasurementCountResponse_Type()
}

type GetMeasurementCountResponse_Data struct {
	// Всего измерений
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

func (*GetMeasurementCountResponse_Data) isGetMeasurementCountResponse_Type() {}

// Ответ на запрос получения количества преобразованных измерений
type GetMeasurementConvertedCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetMeasurementConvertedCountResponse_Data
	Type isGetMeasurementConvertedCountResponse_Type `protobuf_oneof:"type"`
}

func (x *GetMeasurementConvertedCountResponse) Reset() {
	*x = GetMeasurementConvertedCountResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetMeasurementConvertedCountResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetMeasurementConvertedCountResponse) ProtoMessage() {}

func (x *GetMeasurementConvertedCountResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetMeasurementConvertedCountResponse.ProtoReflect.Descriptor instead.
func (*GetMeasurementConvertedCountResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{8}
}

func (m *GetMeasurementConvertedCountResponse) GetType() isGetMeasurementConvertedCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetMeasurementConvertedCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetMeasurementConvertedCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

type isGetMeasurementConvertedCountResponse_Type interface {
	isGetMeasurementConvertedCountResponse_Type()
}

type GetMeasurementConvertedCountResponse_Data struct {
	// Всего измерений
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

func (*GetMeasurementConvertedCountResponse_Data) isGetMeasurementConvertedCountResponse_Type() {}

// Параметры пагинации измерений
type MeasurementPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// По умолчанию: SYNCED_AT
	OrderByType MeasurementPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.telemetry_metric.v1.MeasurementPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// По умолчанию: DESC
	DirectionType MeasurementPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.telemetry_metric.v1.MeasurementPaging_DirectionType" json:"direction_type,omitempty"`
	// Количество записей на страницу.
	// Минимальное значение: 1.
	// Максимальное значение: 100.
	// По умолчанию: 20.
	// Если значение 0 (не передано), то выставляем значение по умолчанию
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// По умолчанию: 0
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

func (x *MeasurementPaging) Reset() {
	*x = MeasurementPaging{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MeasurementPaging) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MeasurementPaging) ProtoMessage() {}

func (x *MeasurementPaging) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MeasurementPaging.ProtoReflect.Descriptor instead.
func (*MeasurementPaging) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{9}
}

func (x *MeasurementPaging) GetOrderByType() MeasurementPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return MeasurementPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *MeasurementPaging) GetDirectionType() MeasurementPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return MeasurementPaging_DIRECTION_TYPE_UNKNOWN
}

func (x *MeasurementPaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *MeasurementPaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Запрос сохранения измерения
type PostMeasurementRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Измерение
	Data *Measurement `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *PostMeasurementRequest) Reset() {
	*x = PostMeasurementRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PostMeasurementRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PostMeasurementRequest) ProtoMessage() {}

func (x *PostMeasurementRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PostMeasurementRequest.ProtoReflect.Descriptor instead.
func (*PostMeasurementRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{10}
}

func (x *PostMeasurementRequest) GetData() *Measurement {
	if x != nil {
		return x.Data
	}
	return nil
}

// Ответ на запрос сохранения измерения
type PostMeasurementResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostMeasurementResponse) Reset() {
	*x = PostMeasurementResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PostMeasurementResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PostMeasurementResponse) ProtoMessage() {}

func (x *PostMeasurementResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PostMeasurementResponse.ProtoReflect.Descriptor instead.
func (*PostMeasurementResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{11}
}

// Запрос сохранения потока измерения
type PostMeasurementHalfDuplexRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Измерение
	Data *Measurement `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *PostMeasurementHalfDuplexRequest) Reset() {
	*x = PostMeasurementHalfDuplexRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PostMeasurementHalfDuplexRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PostMeasurementHalfDuplexRequest) ProtoMessage() {}

func (x *PostMeasurementHalfDuplexRequest) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PostMeasurementHalfDuplexRequest.ProtoReflect.Descriptor instead.
func (*PostMeasurementHalfDuplexRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{12}
}

func (x *PostMeasurementHalfDuplexRequest) GetData() *Measurement {
	if x != nil {
		return x.Data
	}
	return nil
}

// Ответ на запрос сохранения потока измерений
type PostMeasurementHalfDuplexResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostMeasurementHalfDuplexResponse) Reset() {
	*x = PostMeasurementHalfDuplexResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PostMeasurementHalfDuplexResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PostMeasurementHalfDuplexResponse) ProtoMessage() {}

func (x *PostMeasurementHalfDuplexResponse) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PostMeasurementHalfDuplexResponse.ProtoReflect.Descriptor instead.
func (*PostMeasurementHalfDuplexResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{13}
}

// Измерение.
// Очередь key.telemetry_consumer.measurement_stream_request.v1
type Measurement struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	IndicatorId int32 `protobuf:"varint,1,opt,name=indicator_id,json=indicatorId,proto3" json:"indicator_id,omitempty"`
	// Значение
	Value float32 `protobuf:"fixed32,2,opt,name=value,proto3" json:"value,omitempty"`
	// Временная метка сбора счётчиком.
	// Если не передано берётся серверное время
	SyncedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=synced_at,json=syncedAt,proto3" json:"synced_at,omitempty"`
	// ФИАС
	FiasId *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=fias_id,json=fiasId,proto3" json:"fias_id,omitempty"`
	// Идентификатор устройства
	DeviceId *wrapperspb.Int32Value `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	// Идентификатор родительского устройства
	DeviceParentId *wrapperspb.Int32Value `protobuf:"bytes,6,opt,name=device_parent_id,json=deviceParentId,proto3" json:"device_parent_id,omitempty"`
	// Модель устройства
	DeviceModel *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=device_model,json=deviceModel,proto3" json:"device_model,omitempty"`
	// Тип устройства
	DeviceType Measurement_DeviceType `protobuf:"varint,8,opt,name=device_type,json=deviceType,proto3,enum=keyapis.telemetry_metric.v1.Measurement_DeviceType" json:"device_type,omitempty"`
	// Тип энергоресурса
	MetricType Measurement_MetricType `protobuf:"varint,9,opt,name=metric_type,json=metricType,proto3,enum=keyapis.telemetry_metric.v1.Measurement_MetricType" json:"metric_type,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// Заполняется при создании и изменении.
	// Является версией объекта
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Сдвиг таймзоны относительно UTC для даты synced_at
	UtcOffset int32 `protobuf:"varint,11,opt,name=utc_offset,json=utcOffset,proto3" json:"utc_offset,omitempty"`
	// Тип единицы измерения, в которой представлено, получаемое измерение
	UnitType Measurement_UnitType `protobuf:"varint,12,opt,name=unit_type,json=unitType,proto3,enum=keyapis.telemetry_metric.v1.Measurement_UnitType" json:"unit_type,omitempty"`
}

func (x *Measurement) Reset() {
	*x = Measurement{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Measurement) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Measurement) ProtoMessage() {}

func (x *Measurement) ProtoReflect() protoreflect.Message {
	mi := &file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Measurement.ProtoReflect.Descriptor instead.
func (*Measurement) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP(), []int{14}
}

func (x *Measurement) GetIndicatorId() int32 {
	if x != nil {
		return x.IndicatorId
	}
	return 0
}

func (x *Measurement) GetValue() float32 {
	if x != nil {
		return x.Value
	}
	return 0
}

func (x *Measurement) GetSyncedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.SyncedAt
	}
	return nil
}

func (x *Measurement) GetFiasId() *wrapperspb.StringValue {
	if x != nil {
		return x.FiasId
	}
	return nil
}

func (x *Measurement) GetDeviceId() *wrapperspb.Int32Value {
	if x != nil {
		return x.DeviceId
	}
	return nil
}

func (x *Measurement) GetDeviceParentId() *wrapperspb.Int32Value {
	if x != nil {
		return x.DeviceParentId
	}
	return nil
}

func (x *Measurement) GetDeviceModel() *wrapperspb.StringValue {
	if x != nil {
		return x.DeviceModel
	}
	return nil
}

func (x *Measurement) GetDeviceType() Measurement_DeviceType {
	if x != nil {
		return x.DeviceType
	}
	return Measurement_DEVICE_TYPE_UNKNOWN
}

func (x *Measurement) GetMetricType() Measurement_MetricType {
	if x != nil {
		return x.MetricType
	}
	return Measurement_METRIC_TYPE_UNKNOWN
}

func (x *Measurement) GetChangedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ChangedAt
	}
	return nil
}

func (x *Measurement) GetUtcOffset() int32 {
	if x != nil {
		return x.UtcOffset
	}
	return 0
}

func (x *Measurement) GetUnitType() Measurement_UnitType {
	if x != nil {
		return x.UnitType
	}
	return Measurement_UNIT_TYPE_UNKNOWN
}

var File_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto protoreflect.FileDescriptor

var file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDesc = []byte{
	0x0a, 0x49, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x5f, 0x76, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,
	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72,
	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
	0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74,
	0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x48,
	0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61,
	0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x48, 0x00,
	0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69,
	0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc4, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x4d, 0x65,
	0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74,
	0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a,
	0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73,
	0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50,
	0x61, 0x67, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42,
	0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a,
	0x1a, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c,
	0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x22, 0x6d, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72,
	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x22, 0xa6, 0x04, 0x0a, 0x11, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x61, 0x73,
	0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x61, 0x73,
	0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64,
	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f,
	0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x62, 0x65, 0x67, 0x69, 0x6e,
	0x5f, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x62, 0x65,
	0x67, 0x69, 0x6e, 0x53, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x65,
	0x6e, 0x64, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b,
	0x65, 0x6e, 0x64, 0x53, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73,
	0x12, 0x56, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
	0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x33,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61,
	0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x73,
	0x12, 0x59, 0x0a, 0x1b, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x65,
	0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x52, 0x18, 0x69, 0x73, 0x42, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x61, 0x73, 0x75,
	0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x64, 0x0a, 0x1a, 0x47,
	0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x22, 0x6d, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x22, 0x3b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x44, 0x0a,
	0x24, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43,
	0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x22, 0x91, 0x03, 0x0a, 0x11, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x5e, 0x0a, 0x0d, 0x6f, 0x72, 0x64,
	0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
	0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67,
	0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f, 0x72,
	0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x63, 0x0a, 0x0e, 0x64, 0x69, 0x72,
	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x3c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e,
	0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52,
	0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14,
	0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c,
	0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x49, 0x0a, 0x0b,
	0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f,
	0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b,
	0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x44, 0x49, 0x43, 0x41,
	0x54, 0x4f, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x59, 0x4e, 0x43,
	0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x02, 0x22, 0x3e, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x52, 0x45,
	0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
	0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x12, 0x07,
	0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x02, 0x22, 0x5b, 0x0a, 0x16, 0x50, 0x6f, 0x73, 0x74, 0x4d,
	0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x41, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
	0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x22, 0x19, 0x0a, 0x17, 0x50, 0x6f, 0x73, 0x74, 0x4d, 0x65, 0x61, 0x73,
	0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x65, 0x0a, 0x20, 0x50, 0x6f, 0x73, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e,
	0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x23, 0x0a, 0x21, 0x50, 0x6f, 0x73, 0x74, 0x4d, 0x65,
	0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70,
	0x6c, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae, 0x0a, 0x0a, 0x0b,
	0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x69,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37,
	0x0a, 0x09, 0x73, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x73,
	0x79, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x66, 0x69, 0x61, 0x73, 0x5f,
	0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x66, 0x69, 0x61, 0x73, 0x49, 0x64, 0x12, 0x38,
	0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x10, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
	0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
	0x3f, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x12, 0x54, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72,
	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65,
	0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x0a,
	0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41,
	0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
	0x75, 0x74, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x09, 0x75, 0x74, 0x63, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x4e, 0x0a, 0x09, 0x75,
	0x6e, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x61,
	0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x08, 0x75, 0x6e, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x0a,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x45,
	0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x55, 0x42, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16,
	0x50, 0x55, 0x4c, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45,
	0x43, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x55, 0x4c, 0x53,
	0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44,
	0x45, 0x52, 0x5f, 0x4c, 0x52, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x45, 0x54, 0x45, 0x52,
	0x49, 0x4e, 0x47, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13,
	0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52,
	0x54, 0x45, 0x52, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x5f, 0x42, 0x55, 0x53, 0x5f, 0x48,
	0x55, 0x42, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x43,
	0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x4c, 0x52, 0x10,
	0x07, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x52, 0x10, 0x08, 0x22, 0x68,
	0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13,
	0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e,
	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x4f, 0x54, 0x5f, 0x57, 0x41, 0x54,
	0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4c, 0x44, 0x5f, 0x57, 0x41, 0x54,
	0x45, 0x52, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x45, 0x41, 0x54, 0x10, 0x03, 0x12, 0x07,
	0x0a, 0x03, 0x47, 0x41, 0x53, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4c, 0x45, 0x43, 0x54,
	0x52, 0x49, 0x43, 0x49, 0x54, 0x59, 0x10, 0x05, 0x22, 0x91, 0x02, 0x0a, 0x08, 0x55, 0x6e, 0x69,
	0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x54, 0x59,
	0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07,
	0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x43, 0x10, 0x02,
	0x12, 0x06, 0x0a, 0x02, 0x57, 0x54, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x4b, 0x41, 0x4c,
	0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x05, 0x12, 0x07, 0x0a,
	0x03, 0x4b, 0x57, 0x48, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x47, 0x5f, 0x43, 0x4d, 0x32,
	0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x47, 0x46, 0x5f, 0x43, 0x4d, 0x32, 0x10, 0x08, 0x12,
	0x06, 0x0a, 0x02, 0x4d, 0x33, 0x10, 0x09, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x33, 0x5f, 0x48, 0x10,
	0x0a, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x50, 0x41, 0x10, 0x0b, 0x12, 0x06, 0x0a, 0x02, 0x4d, 0x53,
	0x10, 0x0c, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x0d, 0x12,
	0x05, 0x0a, 0x01, 0x54, 0x10, 0x0e, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x5f, 0x48, 0x10, 0x0f, 0x12,
	0x05, 0x0a, 0x01, 0x48, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x4e, 0x5f, 0x4d, 0x45,
	0x41, 0x53, 0x55, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x11, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4d,
	0x50, 0x10, 0x12, 0x12, 0x05, 0x0a, 0x01, 0x4a, 0x10, 0x13, 0x12, 0x06, 0x0a, 0x02, 0x4b, 0x4a,
	0x10, 0x14, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x4a, 0x10, 0x15, 0x12, 0x07, 0x0a, 0x03, 0x57, 0x54,
	0x48, 0x10, 0x16, 0x12, 0x07, 0x0a, 0x03, 0x4b, 0x57, 0x54, 0x10, 0x17, 0x12, 0x07, 0x0a, 0x03,
	0x4d, 0x49, 0x4e, 0x10, 0x18, 0x12, 0x05, 0x0a, 0x01, 0x53, 0x10, 0x19, 0x32, 0xa4, 0x09, 0x0a,
	0x12, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x12, 0xaa, 0x01, 0x0a, 0x0f, 0x50, 0x6f, 0x73, 0x74, 0x4d, 0x65, 0x61, 0x73,
	0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72,
	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x4d,
	0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x24, 0x2f, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
	0x12, 0x9e, 0x01, 0x0a, 0x19, 0x50, 0x6f, 0x73, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x12, 0x3d,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73,
	0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6c, 0x66,
	0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6c, 0x66, 0x44,
	0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28,
	0x01, 0x12, 0xba, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65,
	0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x36, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72,
	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x37, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x2b, 0x12, 0x29, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x61, 0x73,
	0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0xbc,
	0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e,
	0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x37, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
	0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x2c, 0x12, 0x2a, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x61, 0x73,
	0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xdf, 0x01,
	0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74,
	0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d,
	0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72,
	0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
	0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65,
	0x72, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x76, 0x31, 0x2f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x63,
	0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12,
	0xe1, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x40, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e,
	0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x41, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43,
	0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d,
	0x65, 0x6e, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x2f, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x42, 0xdc, 0x01, 0x0a, 0x1e, 0x72, 0x75, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x2e, 0x76, 0x31, 0x42, 0x1d, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x54,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x31,
	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x03, 0x50, 0x00, 0x5a, 0x1c, 0x2f, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x31, 0xd8, 0x01, 0x01, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x19,
	0x4b, 0x45, 0x59, 0x41, 0x50, 0x49, 0x53, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59,
	0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x59, 0x56, 0x31, 0xaa, 0x02, 0x1a, 0x4b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1a, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x5c, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x5c, 0x56, 0x31, 0xea, 0x02, 0x1c, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x54,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x3a, 0x3a,
	0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescOnce sync.Once
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescData = file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDesc
)

func file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescGZIP() []byte {
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescOnce.Do(func() {
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescData = protoimpl.X.CompressGZIP(file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescData)
	})
	return file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDescData
}

var file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
var file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_goTypes = []interface{}{
	(MeasurementPaging_OrderByType)(0),           // 0: keyapis.telemetry_metric.v1.MeasurementPaging.OrderByType
	(MeasurementPaging_DirectionType)(0),         // 1: keyapis.telemetry_metric.v1.MeasurementPaging.DirectionType
	(Measurement_DeviceType)(0),                  // 2: keyapis.telemetry_metric.v1.Measurement.DeviceType
	(Measurement_MetricType)(0),                  // 3: keyapis.telemetry_metric.v1.Measurement.MetricType
	(Measurement_UnitType)(0),                    // 4: keyapis.telemetry_metric.v1.Measurement.UnitType
	(*GetMeasurementListRequest)(nil),            // 5: keyapis.telemetry_metric.v1.GetMeasurementListRequest
	(*GetMeasurementConvertedListRequest)(nil),   // 6: keyapis.telemetry_metric.v1.GetMeasurementConvertedListRequest
	(*GetMeasurementListResponse)(nil),           // 7: keyapis.telemetry_metric.v1.GetMeasurementListResponse
	(*GetMeasurementConvertedListResponse)(nil),  // 8: keyapis.telemetry_metric.v1.GetMeasurementConvertedListResponse
	(*MeasurementFilter)(nil),                    // 9: keyapis.telemetry_metric.v1.MeasurementFilter
	(*GetMeasurementCountRequest)(nil),           // 10: keyapis.telemetry_metric.v1.GetMeasurementCountRequest
	(*GetMeasurementConvertedCountRequest)(nil),  // 11: keyapis.telemetry_metric.v1.GetMeasurementConvertedCountRequest
	(*GetMeasurementCountResponse)(nil),          // 12: keyapis.telemetry_metric.v1.GetMeasurementCountResponse
	(*GetMeasurementConvertedCountResponse)(nil), // 13: keyapis.telemetry_metric.v1.GetMeasurementConvertedCountResponse
	(*MeasurementPaging)(nil),                    // 14: keyapis.telemetry_metric.v1.MeasurementPaging
	(*PostMeasurementRequest)(nil),               // 15: keyapis.telemetry_metric.v1.PostMeasurementRequest
	(*PostMeasurementResponse)(nil),              // 16: keyapis.telemetry_metric.v1.PostMeasurementResponse
	(*PostMeasurementHalfDuplexRequest)(nil),     // 17: keyapis.telemetry_metric.v1.PostMeasurementHalfDuplexRequest
	(*PostMeasurementHalfDuplexResponse)(nil),    // 18: keyapis.telemetry_metric.v1.PostMeasurementHalfDuplexResponse
	(*Measurement)(nil),                          // 19: keyapis.telemetry_metric.v1.Measurement
	(*timestamppb.Timestamp)(nil),                // 20: google.protobuf.Timestamp
	(*wrapperspb.BoolValue)(nil),                 // 21: google.protobuf.BoolValue
	(*wrapperspb.StringValue)(nil),               // 22: google.protobuf.StringValue
	(*wrapperspb.Int32Value)(nil),                // 23: google.protobuf.Int32Value
}
var file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_depIdxs = []int32{
	9,  // 0: keyapis.telemetry_metric.v1.GetMeasurementListRequest.filter:type_name -> keyapis.telemetry_metric.v1.MeasurementFilter
	14, // 1: keyapis.telemetry_metric.v1.GetMeasurementListRequest.paging:type_name -> keyapis.telemetry_metric.v1.MeasurementPaging
	9,  // 2: keyapis.telemetry_metric.v1.GetMeasurementConvertedListRequest.filter:type_name -> keyapis.telemetry_metric.v1.MeasurementFilter
	14, // 3: keyapis.telemetry_metric.v1.GetMeasurementConvertedListRequest.paging:type_name -> keyapis.telemetry_metric.v1.MeasurementPaging
	19, // 4: keyapis.telemetry_metric.v1.GetMeasurementListResponse.data:type_name -> keyapis.telemetry_metric.v1.Measurement
	19, // 5: keyapis.telemetry_metric.v1.GetMeasurementConvertedListResponse.data:type_name -> keyapis.telemetry_metric.v1.Measurement
	20, // 6: keyapis.telemetry_metric.v1.MeasurementFilter.begin_synced_at:type_name -> google.protobuf.Timestamp
	20, // 7: keyapis.telemetry_metric.v1.MeasurementFilter.end_synced_at:type_name -> google.protobuf.Timestamp
	2,  // 8: keyapis.telemetry_metric.v1.MeasurementFilter.device_types:type_name -> keyapis.telemetry_metric.v1.Measurement.DeviceType
	3,  // 9: keyapis.telemetry_metric.v1.MeasurementFilter.metric_types:type_name -> keyapis.telemetry_metric.v1.Measurement.MetricType
	21, // 10: keyapis.telemetry_metric.v1.MeasurementFilter.is_border_measurements_only:type_name -> google.protobuf.BoolValue
	9,  // 11: keyapis.telemetry_metric.v1.GetMeasurementCountRequest.filter:type_name -> keyapis.telemetry_metric.v1.MeasurementFilter
	9,  // 12: keyapis.telemetry_metric.v1.GetMeasurementConvertedCountRequest.filter:type_name -> keyapis.telemetry_metric.v1.MeasurementFilter
	0,  // 13: keyapis.telemetry_metric.v1.MeasurementPaging.order_by_type:type_name -> keyapis.telemetry_metric.v1.MeasurementPaging.OrderByType
	1,  // 14: keyapis.telemetry_metric.v1.MeasurementPaging.direction_type:type_name -> keyapis.telemetry_metric.v1.MeasurementPaging.DirectionType
	19, // 15: keyapis.telemetry_metric.v1.PostMeasurementRequest.data:type_name -> keyapis.telemetry_metric.v1.Measurement
	19, // 16: keyapis.telemetry_metric.v1.PostMeasurementHalfDuplexRequest.data:type_name -> keyapis.telemetry_metric.v1.Measurement
	20, // 17: keyapis.telemetry_metric.v1.Measurement.synced_at:type_name -> google.protobuf.Timestamp
	22, // 18: keyapis.telemetry_metric.v1.Measurement.fias_id:type_name -> google.protobuf.StringValue
	23, // 19: keyapis.telemetry_metric.v1.Measurement.device_id:type_name -> google.protobuf.Int32Value
	23, // 20: keyapis.telemetry_metric.v1.Measurement.device_parent_id:type_name -> google.protobuf.Int32Value
	22, // 21: keyapis.telemetry_metric.v1.Measurement.device_model:type_name -> google.protobuf.StringValue
	2,  // 22: keyapis.telemetry_metric.v1.Measurement.device_type:type_name -> keyapis.telemetry_metric.v1.Measurement.DeviceType
	3,  // 23: keyapis.telemetry_metric.v1.Measurement.metric_type:type_name -> keyapis.telemetry_metric.v1.Measurement.MetricType
	20, // 24: keyapis.telemetry_metric.v1.Measurement.changed_at:type_name -> google.protobuf.Timestamp
	4,  // 25: keyapis.telemetry_metric.v1.Measurement.unit_type:type_name -> keyapis.telemetry_metric.v1.Measurement.UnitType
	15, // 26: keyapis.telemetry_metric.v1.MeasurementService.PostMeasurement:input_type -> keyapis.telemetry_metric.v1.PostMeasurementRequest
	17, // 27: keyapis.telemetry_metric.v1.MeasurementService.PostMeasurementHalfDuplex:input_type -> keyapis.telemetry_metric.v1.PostMeasurementHalfDuplexRequest
	5,  // 28: keyapis.telemetry_metric.v1.MeasurementService.GetMeasurementList:input_type -> keyapis.telemetry_metric.v1.GetMeasurementListRequest
	10, // 29: keyapis.telemetry_metric.v1.MeasurementService.GetMeasurementCount:input_type -> keyapis.telemetry_metric.v1.GetMeasurementCountRequest
	6,  // 30: keyapis.telemetry_metric.v1.MeasurementService.GetMeasurementConvertedList:input_type -> keyapis.telemetry_metric.v1.GetMeasurementConvertedListRequest
	11, // 31: keyapis.telemetry_metric.v1.MeasurementService.GetMeasurementConvertedCount:input_type -> keyapis.telemetry_metric.v1.GetMeasurementConvertedCountRequest
	16, // 32: keyapis.telemetry_metric.v1.MeasurementService.PostMeasurement:output_type -> keyapis.telemetry_metric.v1.PostMeasurementResponse
	18, // 33: keyapis.telemetry_metric.v1.MeasurementService.PostMeasurementHalfDuplex:output_type -> keyapis.telemetry_metric.v1.PostMeasurementHalfDuplexResponse
	7,  // 34: keyapis.telemetry_metric.v1.MeasurementService.GetMeasurementList:output_type -> keyapis.telemetry_metric.v1.GetMeasurementListResponse
	12, // 35: keyapis.telemetry_metric.v1.MeasurementService.GetMeasurementCount:output_type -> keyapis.telemetry_metric.v1.GetMeasurementCountResponse
	8,  // 36: keyapis.telemetry_metric.v1.MeasurementService.GetMeasurementConvertedList:output_type -> keyapis.telemetry_metric.v1.GetMeasurementConvertedListResponse
	13, // 37: keyapis.telemetry_metric.v1.MeasurementService.GetMeasurementConvertedCount:output_type -> keyapis.telemetry_metric.v1.GetMeasurementConvertedCountResponse
	32, // [32:38] is the sub-list for method output_type
	26, // [26:32] is the sub-list for method input_type
	26, // [26:26] is the sub-list for extension type_name
	26, // [26:26] is the sub-list for extension extendee
	0,  // [0:26] is the sub-list for field type_name
}

func init() { file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_init() }
func file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_init() {
	if File_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMeasurementListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMeasurementConvertedListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMeasurementListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMeasurementConvertedListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MeasurementFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMeasurementCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMeasurementConvertedCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMeasurementCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetMeasurementConvertedCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MeasurementPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostMeasurementRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostMeasurementResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostMeasurementHalfDuplexRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostMeasurementHalfDuplexResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Measurement); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[0].OneofWrappers = []interface{}{
		(*GetMeasurementListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[1].OneofWrappers = []interface{}{
		(*GetMeasurementConvertedListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[2].OneofWrappers = []interface{}{
		(*GetMeasurementListResponse_Data)(nil),
	}
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[3].OneofWrappers = []interface{}{
		(*GetMeasurementConvertedListResponse_Data)(nil),
	}
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*GetMeasurementCountResponse_Data)(nil),
	}
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes[8].OneofWrappers = []interface{}{
		(*GetMeasurementConvertedCountResponse_Data)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDesc,
			NumEnums:      5,
			NumMessages:   15,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_goTypes,
		DependencyIndexes: file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_depIdxs,
		EnumInfos:         file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_enumTypes,
		MessageInfos:      file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_msgTypes,
	}.Build()
	File_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto = out.File
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_rawDesc = nil
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_goTypes = nil
	file_keyapis_telemetry_metric_v1_keyapis_telemetry_metric_measurement_v1_proto_depIdxs = nil
}
