// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto

#include "keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.pb.h"

#include <algorithm>
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/extension_set.h"
#include "google/protobuf/wire_format_lite.h"
#include "google/protobuf/io/zero_copy_stream_impl_lite.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"
PROTOBUF_PRAGMA_INIT_SEG
namespace _pb = ::PROTOBUF_NAMESPACE_ID;
namespace _pbi = ::PROTOBUF_NAMESPACE_ID::internal;
namespace keyapis {
namespace telemetry_control {
namespace v1 {
template <typename>
PROTOBUF_CONSTEXPR DeleteDeviceRequest::DeleteDeviceRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.id_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeleteDeviceRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeleteDeviceRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeleteDeviceRequestDefaultTypeInternal() {}
  union {
    DeleteDeviceRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeleteDeviceRequestDefaultTypeInternal _DeleteDeviceRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeleteDeviceResponse::DeleteDeviceResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct DeleteDeviceResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeleteDeviceResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeleteDeviceResponseDefaultTypeInternal() {}
  union {
    DeleteDeviceResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeleteDeviceResponseDefaultTypeInternal _DeleteDeviceResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PutDeviceGroupAttachRequest::PutDeviceGroupAttachRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.device_group_)*/nullptr} {}
struct PutDeviceGroupAttachRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PutDeviceGroupAttachRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PutDeviceGroupAttachRequestDefaultTypeInternal() {}
  union {
    PutDeviceGroupAttachRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PutDeviceGroupAttachRequestDefaultTypeInternal _PutDeviceGroupAttachRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PutDeviceGroupAttachResponse::PutDeviceGroupAttachResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PutDeviceGroupAttachResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PutDeviceGroupAttachResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PutDeviceGroupAttachResponseDefaultTypeInternal() {}
  union {
    PutDeviceGroupAttachResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PutDeviceGroupAttachResponseDefaultTypeInternal _PutDeviceGroupAttachResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceGroupListRequest::GetDeviceGroupListRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.filter_)*/nullptr
  , /*decltype(_impl_.pagination_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceGroupListRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceGroupListRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceGroupListRequestDefaultTypeInternal() {}
  union {
    GetDeviceGroupListRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceGroupListRequestDefaultTypeInternal _GetDeviceGroupListRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeviceGroupPaging::DeviceGroupPaging(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.order_by_type_)*/ 0

  , /*decltype(_impl_.direction_type_)*/ 0

  , /*decltype(_impl_.limit_)*/ 0

  , /*decltype(_impl_.offset_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeviceGroupPagingDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeviceGroupPagingDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeviceGroupPagingDefaultTypeInternal() {}
  union {
    DeviceGroupPaging _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeviceGroupPagingDefaultTypeInternal _DeviceGroupPaging_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceGroupListResponse::GetDeviceGroupListResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceGroupListResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceGroupListResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceGroupListResponseDefaultTypeInternal() {}
  union {
    GetDeviceGroupListResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceGroupListResponseDefaultTypeInternal _GetDeviceGroupListResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceGroupCountRequest::GetDeviceGroupCountRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.filter_)*/nullptr} {}
struct GetDeviceGroupCountRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceGroupCountRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceGroupCountRequestDefaultTypeInternal() {}
  union {
    GetDeviceGroupCountRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceGroupCountRequestDefaultTypeInternal _GetDeviceGroupCountRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeviceGroupFilter::DeviceGroupFilter(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.group_ids_)*/{}
  , /*decltype(_impl_.device_ids_)*/ {}
  ,/* _impl_._device_ids_cached_byte_size_ = */ { 0 }

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeviceGroupFilterDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeviceGroupFilterDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeviceGroupFilterDefaultTypeInternal() {}
  union {
    DeviceGroupFilter _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeviceGroupFilterDefaultTypeInternal _DeviceGroupFilter_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceGroupCountResponse::GetDeviceGroupCountResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceGroupCountResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceGroupCountResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceGroupCountResponseDefaultTypeInternal() {}
  union {
    GetDeviceGroupCountResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceGroupCountResponseDefaultTypeInternal _GetDeviceGroupCountResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PutDeviceGroupDetachRequest::PutDeviceGroupDetachRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.device_group_)*/nullptr} {}
struct PutDeviceGroupDetachRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PutDeviceGroupDetachRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PutDeviceGroupDetachRequestDefaultTypeInternal() {}
  union {
    PutDeviceGroupDetachRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PutDeviceGroupDetachRequestDefaultTypeInternal _PutDeviceGroupDetachRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PutDeviceGroupDetachResponse::PutDeviceGroupDetachResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PutDeviceGroupDetachResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PutDeviceGroupDetachResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PutDeviceGroupDetachResponseDefaultTypeInternal() {}
  union {
    PutDeviceGroupDetachResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PutDeviceGroupDetachResponseDefaultTypeInternal _PutDeviceGroupDetachResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeviceGroup::DeviceGroup(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.group_id_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.device_id_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeviceGroupDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeviceGroupDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeviceGroupDefaultTypeInternal() {}
  union {
    DeviceGroup _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeviceGroupDefaultTypeInternal _DeviceGroup_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceIndicatorRequest::PostDeviceIndicatorRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/nullptr} {}
struct PostDeviceIndicatorRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceIndicatorRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceIndicatorRequestDefaultTypeInternal() {}
  union {
    PostDeviceIndicatorRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceIndicatorRequestDefaultTypeInternal _PostDeviceIndicatorRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceIndicatorResponse_Error::PostDeviceIndicatorResponse_Error(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceIndicatorResponse_ErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceIndicatorResponse_ErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceIndicatorResponse_ErrorDefaultTypeInternal() {}
  union {
    PostDeviceIndicatorResponse_Error _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceIndicatorResponse_ErrorDefaultTypeInternal _PostDeviceIndicatorResponse_Error_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceIndicatorResponse::PostDeviceIndicatorResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceIndicatorResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceIndicatorResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceIndicatorResponseDefaultTypeInternal() {}
  union {
    PostDeviceIndicatorResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceIndicatorResponseDefaultTypeInternal _PostDeviceIndicatorResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorRequest::GetDeviceIndicatorRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.id_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct GetDeviceIndicatorRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorRequestDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorRequestDefaultTypeInternal _GetDeviceIndicatorRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorResponse::GetDeviceIndicatorResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceIndicatorResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorResponseDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorResponseDefaultTypeInternal _GetDeviceIndicatorResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceRequest::GetDeviceRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.id_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct GetDeviceRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceRequestDefaultTypeInternal() {}
  union {
    GetDeviceRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceRequestDefaultTypeInternal _GetDeviceRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceResponse::GetDeviceResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceResponseDefaultTypeInternal() {}
  union {
    GetDeviceResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceResponseDefaultTypeInternal _GetDeviceResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorListRequest::GetDeviceIndicatorListRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.filter_)*/nullptr
  , /*decltype(_impl_.pagination_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceIndicatorListRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorListRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorListRequestDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorListRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorListRequestDefaultTypeInternal _GetDeviceIndicatorListRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR IndicatorPaging_ValidationError_LimitInvalid::IndicatorPaging_ValidationError_LimitInvalid(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct IndicatorPaging_ValidationError_LimitInvalidDefaultTypeInternal {
  PROTOBUF_CONSTEXPR IndicatorPaging_ValidationError_LimitInvalidDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~IndicatorPaging_ValidationError_LimitInvalidDefaultTypeInternal() {}
  union {
    IndicatorPaging_ValidationError_LimitInvalid _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IndicatorPaging_ValidationError_LimitInvalidDefaultTypeInternal _IndicatorPaging_ValidationError_LimitInvalid_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR IndicatorPaging_ValidationError_OffsetInvalid::IndicatorPaging_ValidationError_OffsetInvalid(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct IndicatorPaging_ValidationError_OffsetInvalidDefaultTypeInternal {
  PROTOBUF_CONSTEXPR IndicatorPaging_ValidationError_OffsetInvalidDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~IndicatorPaging_ValidationError_OffsetInvalidDefaultTypeInternal() {}
  union {
    IndicatorPaging_ValidationError_OffsetInvalid _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IndicatorPaging_ValidationError_OffsetInvalidDefaultTypeInternal _IndicatorPaging_ValidationError_OffsetInvalid_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR IndicatorPaging_ValidationError::IndicatorPaging_ValidationError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct IndicatorPaging_ValidationErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR IndicatorPaging_ValidationErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~IndicatorPaging_ValidationErrorDefaultTypeInternal() {}
  union {
    IndicatorPaging_ValidationError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IndicatorPaging_ValidationErrorDefaultTypeInternal _IndicatorPaging_ValidationError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR IndicatorPaging::IndicatorPaging(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.order_by_type_)*/ 0

  , /*decltype(_impl_.direction_type_)*/ 0

  , /*decltype(_impl_.limit_)*/ 0

  , /*decltype(_impl_.offset_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct IndicatorPagingDefaultTypeInternal {
  PROTOBUF_CONSTEXPR IndicatorPagingDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~IndicatorPagingDefaultTypeInternal() {}
  union {
    IndicatorPaging _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IndicatorPagingDefaultTypeInternal _IndicatorPaging_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorListResponse_Error::GetDeviceIndicatorListResponse_Error(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceIndicatorListResponse_ErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorListResponse_ErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorListResponse_ErrorDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorListResponse_Error _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorListResponse_ErrorDefaultTypeInternal _GetDeviceIndicatorListResponse_Error_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorListResponse::GetDeviceIndicatorListResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceIndicatorListResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorListResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorListResponseDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorListResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorListResponseDefaultTypeInternal _GetDeviceIndicatorListResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR IndicatorFilter_ValidationError::IndicatorFilter_ValidationError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.path_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.message_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct IndicatorFilter_ValidationErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR IndicatorFilter_ValidationErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~IndicatorFilter_ValidationErrorDefaultTypeInternal() {}
  union {
    IndicatorFilter_ValidationError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IndicatorFilter_ValidationErrorDefaultTypeInternal _IndicatorFilter_ValidationError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR IndicatorFilter::IndicatorFilter(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.device_ids_)*/ {}
  ,/* _impl_._device_ids_cached_byte_size_ = */ { 0 }

  , /*decltype(_impl_.sign_types_)*/ {}
  , /*decltype(_impl_._sign_types_cached_byte_size_)*/ { 0 }

  , /*decltype(_impl_.ids_)*/ {}
  ,/* _impl_._ids_cached_byte_size_ = */ { 0 }

  , /*decltype(_impl_.device_serial_numbers_)*/{}
  , /*decltype(_impl_.building_ids_)*/ {}
  ,/* _impl_._building_ids_cached_byte_size_ = */ { 0 }

  , /*decltype(_impl_.room_numbers_)*/{}
  , /*decltype(_impl_.room_labels_)*/{}
  , /*decltype(_impl_.metric_point_ids_)*/{}
  , /*decltype(_impl_.indicator_vendor_types_)*/ {}
  , /*decltype(_impl_._indicator_vendor_types_cached_byte_size_)*/ { 0 }

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct IndicatorFilterDefaultTypeInternal {
  PROTOBUF_CONSTEXPR IndicatorFilterDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~IndicatorFilterDefaultTypeInternal() {}
  union {
    IndicatorFilter _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IndicatorFilterDefaultTypeInternal _IndicatorFilter_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorCountRequest::GetDeviceIndicatorCountRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.filter_)*/nullptr} {}
struct GetDeviceIndicatorCountRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorCountRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorCountRequestDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorCountRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorCountRequestDefaultTypeInternal _GetDeviceIndicatorCountRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorCountResponse_Error::GetDeviceIndicatorCountResponse_Error(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceIndicatorCountResponse_ErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorCountResponse_ErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorCountResponse_ErrorDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorCountResponse_Error _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorCountResponse_ErrorDefaultTypeInternal _GetDeviceIndicatorCountResponse_Error_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorCountResponse::GetDeviceIndicatorCountResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceIndicatorCountResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorCountResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorCountResponseDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorCountResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorCountResponseDefaultTypeInternal _GetDeviceIndicatorCountResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeleteDeviceIndicatorRequest::DeleteDeviceIndicatorRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.id_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeleteDeviceIndicatorRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeleteDeviceIndicatorRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeleteDeviceIndicatorRequestDefaultTypeInternal() {}
  union {
    DeleteDeviceIndicatorRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeleteDeviceIndicatorRequestDefaultTypeInternal _DeleteDeviceIndicatorRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeleteDeviceIndicatorResponse::DeleteDeviceIndicatorResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct DeleteDeviceIndicatorResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeleteDeviceIndicatorResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeleteDeviceIndicatorResponseDefaultTypeInternal() {}
  union {
    DeleteDeviceIndicatorResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeleteDeviceIndicatorResponseDefaultTypeInternal _DeleteDeviceIndicatorResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceFullDuplexRequest_DeviceAsyncStatus_SuccessDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_SuccessDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceFullDuplexRequest_DeviceAsyncStatus_SuccessDefaultTypeInternal() {}
  union {
    PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceFullDuplexRequest_DeviceAsyncStatus_SuccessDefaultTypeInternal _PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.message_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownErrorDefaultTypeInternal() {}
  union {
    PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownErrorDefaultTypeInternal _PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpErrorDefaultTypeInternal() {}
  union {
    PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpErrorDefaultTypeInternal _PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortErrorDefaultTypeInternal() {}
  union {
    PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortErrorDefaultTypeInternal _PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressErrorDefaultTypeInternal() {}
  union {
    PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressErrorDefaultTypeInternal _PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceFullDuplexRequest_DeviceAsyncStatus_ErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus_ErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceFullDuplexRequest_DeviceAsyncStatus_ErrorDefaultTypeInternal() {}
  union {
    PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceFullDuplexRequest_DeviceAsyncStatus_ErrorDefaultTypeInternal _PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatus::PostDeviceFullDuplexRequest_DeviceAsyncStatus(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.device_id_)*/ 0

  , /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceFullDuplexRequest_DeviceAsyncStatusDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest_DeviceAsyncStatusDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceFullDuplexRequest_DeviceAsyncStatusDefaultTypeInternal() {}
  union {
    PostDeviceFullDuplexRequest_DeviceAsyncStatus _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceFullDuplexRequest_DeviceAsyncStatusDefaultTypeInternal _PostDeviceFullDuplexRequest_DeviceAsyncStatus_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequest::PostDeviceFullDuplexRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.request_id_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.task_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceFullDuplexRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceFullDuplexRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceFullDuplexRequestDefaultTypeInternal() {}
  union {
    PostDeviceFullDuplexRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceFullDuplexRequestDefaultTypeInternal _PostDeviceFullDuplexRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceRequest::PostDeviceRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.device_)*/nullptr} {}
struct PostDeviceRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceRequestDefaultTypeInternal() {}
  union {
    PostDeviceRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceRequestDefaultTypeInternal _PostDeviceRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceReplaceRequest::PostDeviceReplaceRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.device_)*/nullptr
  , /*decltype(_impl_.replace_device_id_)*/ 0
} {}
struct PostDeviceReplaceRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceReplaceRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceReplaceRequestDefaultTypeInternal() {}
  union {
    PostDeviceReplaceRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceReplaceRequestDefaultTypeInternal _PostDeviceReplaceRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceReplaceResponse_Error_ReplaceDeviceNotFoundDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_ReplaceDeviceNotFoundDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceReplaceResponse_Error_ReplaceDeviceNotFoundDefaultTypeInternal() {}
  union {
    PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceReplaceResponse_Error_ReplaceDeviceNotFoundDefaultTypeInternal _PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_CreateIndicatorsFail::PostDeviceReplaceResponse_Error_CreateIndicatorsFail(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceReplaceResponse_Error_CreateIndicatorsFailDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_CreateIndicatorsFailDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceReplaceResponse_Error_CreateIndicatorsFailDefaultTypeInternal() {}
  union {
    PostDeviceReplaceResponse_Error_CreateIndicatorsFail _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceReplaceResponse_Error_CreateIndicatorsFailDefaultTypeInternal _PostDeviceReplaceResponse_Error_CreateIndicatorsFail_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceReplaceResponse_Error_MultiLinkedMetricPointDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_MultiLinkedMetricPointDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceReplaceResponse_Error_MultiLinkedMetricPointDefaultTypeInternal() {}
  union {
    PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceReplaceResponse_Error_MultiLinkedMetricPointDefaultTypeInternal _PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_WrongBuilding::PostDeviceReplaceResponse_Error_WrongBuilding(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceReplaceResponse_Error_WrongBuildingDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_WrongBuildingDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceReplaceResponse_Error_WrongBuildingDefaultTypeInternal() {}
  union {
    PostDeviceReplaceResponse_Error_WrongBuilding _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceReplaceResponse_Error_WrongBuildingDefaultTypeInternal _PostDeviceReplaceResponse_Error_WrongBuilding_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_MetricPointNotFound::PostDeviceReplaceResponse_Error_MetricPointNotFound(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PostDeviceReplaceResponse_Error_MetricPointNotFoundDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error_MetricPointNotFoundDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceReplaceResponse_Error_MetricPointNotFoundDefaultTypeInternal() {}
  union {
    PostDeviceReplaceResponse_Error_MetricPointNotFound _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceReplaceResponse_Error_MetricPointNotFoundDefaultTypeInternal _PostDeviceReplaceResponse_Error_MetricPointNotFound_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_Error::PostDeviceReplaceResponse_Error(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceReplaceResponse_ErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceReplaceResponse_ErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceReplaceResponse_ErrorDefaultTypeInternal() {}
  union {
    PostDeviceReplaceResponse_Error _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceReplaceResponse_ErrorDefaultTypeInternal _PostDeviceReplaceResponse_Error_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceReplaceResponse::PostDeviceReplaceResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceReplaceResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceReplaceResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceReplaceResponseDefaultTypeInternal() {}
  union {
    PostDeviceReplaceResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceReplaceResponseDefaultTypeInternal _PostDeviceReplaceResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceFullDuplexResponse::PostDeviceFullDuplexResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.request_id_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.event_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceFullDuplexResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceFullDuplexResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceFullDuplexResponseDefaultTypeInternal() {}
  union {
    PostDeviceFullDuplexResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceFullDuplexResponseDefaultTypeInternal _PostDeviceFullDuplexResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceResponse_Error::PostDeviceResponse_Error(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceResponse_ErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceResponse_ErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceResponse_ErrorDefaultTypeInternal() {}
  union {
    PostDeviceResponse_Error _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceResponse_ErrorDefaultTypeInternal _PostDeviceResponse_Error_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PostDeviceResponse::PostDeviceResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct PostDeviceResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PostDeviceResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PostDeviceResponseDefaultTypeInternal() {}
  union {
    PostDeviceResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PostDeviceResponseDefaultTypeInternal _PostDeviceResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR Indicator_ValidationError::Indicator_ValidationError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.path_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.message_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct Indicator_ValidationErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Indicator_ValidationErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~Indicator_ValidationErrorDefaultTypeInternal() {}
  union {
    Indicator_ValidationError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Indicator_ValidationErrorDefaultTypeInternal _Indicator_ValidationError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR Indicator::Indicator(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.title_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.created_at_)*/nullptr
  , /*decltype(_impl_.changed_at_)*/nullptr
  , /*decltype(_impl_.compatibility_code_)*/nullptr
  , /*decltype(_impl_.coefficient_)*/nullptr
  , /*decltype(_impl_.shift_)*/nullptr
  , /*decltype(_impl_.round_decimal_digits_)*/nullptr
  , /*decltype(_impl_.channel_number_)*/nullptr
  , /*decltype(_impl_.channel_order_)*/nullptr
  , /*decltype(_impl_.id_)*/ 0

  , /*decltype(_impl_.device_id_)*/ 0

  , /*decltype(_impl_.unit_type_)*/ 0

  , /*decltype(_impl_.sign_type_)*/ 0

  , /*decltype(_impl_.is_individual_)*/ false

  , /*decltype(_impl_.archive_type_)*/ 0

  , /*decltype(_impl_.presentation_unit_type_)*/ 0

  , /*decltype(_impl_.metric_expected_freq_)*/ 0

  , /*decltype(_impl_.vendor_type_)*/ 0
} {}
struct IndicatorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR IndicatorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~IndicatorDefaultTypeInternal() {}
  union {
    Indicator _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 IndicatorDefaultTypeInternal _Indicator_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR Device_ValidationError::Device_ValidationError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.path_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.message_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct Device_ValidationErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Device_ValidationErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~Device_ValidationErrorDefaultTypeInternal() {}
  union {
    Device_ValidationError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Device_ValidationErrorDefaultTypeInternal _Device_ValidationError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR Device_MetricPoint::Device_MetricPoint(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.id_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.room_number_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.room_label_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.zone_label_)*/nullptr
  , /*decltype(_impl_.created_at_)*/nullptr
  , /*decltype(_impl_.changed_at_)*/nullptr
  , /*decltype(_impl_.metric_type_)*/ 0

  , /*decltype(_impl_.status_type_)*/ 0

  , /*decltype(_impl_.accounting_type_)*/ 0

  , /*decltype(_impl_.primary_current_type_)*/ 0

  , /*decltype(_impl_.secondary_current_type_)*/ 0

  , /*decltype(_impl_.building_id_)*/ 0

  , /*decltype(_impl_.building_level_)*/ 0

  , /*decltype(_impl_.building_section_)*/ 0
} {}
struct Device_MetricPointDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Device_MetricPointDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~Device_MetricPointDefaultTypeInternal() {}
  union {
    Device_MetricPoint _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Device_MetricPointDefaultTypeInternal _Device_MetricPoint_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR Device::Device(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.indicators_)*/{}
  , /*decltype(_impl_.serial_number_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.model_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.fias_id_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.resource_owner_id_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.metric_point_)*/nullptr
  , /*decltype(_impl_.created_at_)*/nullptr
  , /*decltype(_impl_.changed_at_)*/nullptr
  , /*decltype(_impl_.installed_at_)*/nullptr
  , /*decltype(_impl_.removed_at_)*/nullptr
  , /*decltype(_impl_.check_at_)*/nullptr
  , /*decltype(_impl_.next_check_at_)*/nullptr
  , /*decltype(_impl_.external_id_)*/nullptr
  , /*decltype(_impl_.parent_id_)*/nullptr
  , /*decltype(_impl_.dev_eui_)*/nullptr
  , /*decltype(_impl_.mac_)*/nullptr
  , /*decltype(_impl_.port_)*/nullptr
  , /*decltype(_impl_.network_address_)*/nullptr
  , /*decltype(_impl_.comm_channel_)*/nullptr
  , /*decltype(_impl_.sim_number_)*/nullptr
  , /*decltype(_impl_.sim_serial_)*/nullptr
  , /*decltype(_impl_.ip_address_sim_)*/nullptr
  , /*decltype(_impl_.placement_)*/nullptr
  , /*decltype(_impl_.installation_place_)*/nullptr
  , /*decltype(_impl_.appkey_)*/nullptr
  , /*decltype(_impl_.appeui_)*/nullptr
  , /*decltype(_impl_.protocol_type_label_)*/nullptr
  , /*decltype(_impl_.channel_number_)*/nullptr
  , /*decltype(_impl_.wire_interface_)*/nullptr
  , /*decltype(_impl_.manufacture_year_)*/nullptr
  , /*decltype(_impl_.id_)*/ 0

  , /*decltype(_impl_.type_)*/ 0

  , /*decltype(_impl_.year_)*/ 0

  , /*decltype(_impl_.status_type_)*/ 0

  , /*decltype(_impl_.plan_type_)*/ 0

  , /*decltype(_impl_.pipe_type_)*/ 0

  , /*decltype(_impl_.building_id_)*/ 0

  , /*decltype(_impl_.indicator_vendor_type_)*/ 0
} {}
struct DeviceDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeviceDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeviceDefaultTypeInternal() {}
  union {
    Device _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeviceDefaultTypeInternal _Device_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceListRequest::GetDeviceListRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.filter_)*/nullptr
  , /*decltype(_impl_.pagination_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceListRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceListRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceListRequestDefaultTypeInternal() {}
  union {
    GetDeviceListRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceListRequestDefaultTypeInternal _GetDeviceListRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DevicePaging_ValidationError_LimitInvalid::DevicePaging_ValidationError_LimitInvalid(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct DevicePaging_ValidationError_LimitInvalidDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DevicePaging_ValidationError_LimitInvalidDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DevicePaging_ValidationError_LimitInvalidDefaultTypeInternal() {}
  union {
    DevicePaging_ValidationError_LimitInvalid _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DevicePaging_ValidationError_LimitInvalidDefaultTypeInternal _DevicePaging_ValidationError_LimitInvalid_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DevicePaging_ValidationError_OffsetInvalid::DevicePaging_ValidationError_OffsetInvalid(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct DevicePaging_ValidationError_OffsetInvalidDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DevicePaging_ValidationError_OffsetInvalidDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DevicePaging_ValidationError_OffsetInvalidDefaultTypeInternal() {}
  union {
    DevicePaging_ValidationError_OffsetInvalid _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DevicePaging_ValidationError_OffsetInvalidDefaultTypeInternal _DevicePaging_ValidationError_OffsetInvalid_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DevicePaging_ValidationError::DevicePaging_ValidationError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct DevicePaging_ValidationErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DevicePaging_ValidationErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DevicePaging_ValidationErrorDefaultTypeInternal() {}
  union {
    DevicePaging_ValidationError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DevicePaging_ValidationErrorDefaultTypeInternal _DevicePaging_ValidationError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DevicePaging::DevicePaging(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.order_by_type_)*/ 0

  , /*decltype(_impl_.direction_type_)*/ 0

  , /*decltype(_impl_.limit_)*/ 0

  , /*decltype(_impl_.offset_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DevicePagingDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DevicePagingDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DevicePagingDefaultTypeInternal() {}
  union {
    DevicePaging _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DevicePagingDefaultTypeInternal _DevicePaging_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceListResponse_Error::GetDeviceListResponse_Error(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceListResponse_ErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceListResponse_ErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceListResponse_ErrorDefaultTypeInternal() {}
  union {
    GetDeviceListResponse_Error _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceListResponse_ErrorDefaultTypeInternal _GetDeviceListResponse_Error_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceListResponse::GetDeviceListResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceListResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceListResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceListResponseDefaultTypeInternal() {}
  union {
    GetDeviceListResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceListResponseDefaultTypeInternal _GetDeviceListResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeviceFilter_ValidationError::DeviceFilter_ValidationError(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.path_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.message_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeviceFilter_ValidationErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeviceFilter_ValidationErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeviceFilter_ValidationErrorDefaultTypeInternal() {}
  union {
    DeviceFilter_ValidationError _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeviceFilter_ValidationErrorDefaultTypeInternal _DeviceFilter_ValidationError_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeviceFilter::DeviceFilter(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.fias_ids_)*/{}
  , /*decltype(_impl_.types_)*/ {}
  , /*decltype(_impl_._types_cached_byte_size_)*/ { 0 }

  , /*decltype(_impl_.status_types_)*/ {}
  , /*decltype(_impl_._status_types_cached_byte_size_)*/ { 0 }

  , /*decltype(_impl_.models_)*/{}
  , /*decltype(_impl_.metric_point_metric_types_)*/ {}
  , /*decltype(_impl_._metric_point_metric_types_cached_byte_size_)*/ { 0 }

  , /*decltype(_impl_.room_numbers_)*/{}
  , /*decltype(_impl_.room_labels_)*/{}
  , /*decltype(_impl_.parent_ids_)*/ {}
  ,/* _impl_._parent_ids_cached_byte_size_ = */ { 0 }

  , /*decltype(_impl_.ids_)*/ {}
  ,/* _impl_._ids_cached_byte_size_ = */ { 0 }

  , /*decltype(_impl_.building_ids_)*/ {}
  ,/* _impl_._building_ids_cached_byte_size_ = */ { 0 }

  , /*decltype(_impl_.serial_numbers_)*/{}
  , /*decltype(_impl_.metric_point_ids_)*/{}
  , /*decltype(_impl_.serial_ids_)*/{}
  , /*decltype(_impl_.orpons_)*/ {}
  ,/* _impl_._orpons_cached_byte_size_ = */ { 0 }

  , /*decltype(_impl_.indicator_vendor_types_)*/ {}
  , /*decltype(_impl_._indicator_vendor_types_cached_byte_size_)*/ { 0 }

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeviceFilterDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeviceFilterDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeviceFilterDefaultTypeInternal() {}
  union {
    DeviceFilter _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeviceFilterDefaultTypeInternal _DeviceFilter_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceCountRequest::GetDeviceCountRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.filter_)*/nullptr} {}
struct GetDeviceCountRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceCountRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceCountRequestDefaultTypeInternal() {}
  union {
    GetDeviceCountRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceCountRequestDefaultTypeInternal _GetDeviceCountRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceCountResponse_Error::GetDeviceCountResponse_Error(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reason_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceCountResponse_ErrorDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceCountResponse_ErrorDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceCountResponse_ErrorDefaultTypeInternal() {}
  union {
    GetDeviceCountResponse_Error _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceCountResponse_ErrorDefaultTypeInternal _GetDeviceCountResponse_Error_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceCountResponse::GetDeviceCountResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceCountResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceCountResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceCountResponseDefaultTypeInternal() {}
  union {
    GetDeviceCountResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceCountResponseDefaultTypeInternal _GetDeviceCountResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorMetricPointListRequest::GetDeviceIndicatorMetricPointListRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.filter_)*/nullptr
  , /*decltype(_impl_.pagination_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceIndicatorMetricPointListRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorMetricPointListRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorMetricPointListRequestDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorMetricPointListRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorMetricPointListRequestDefaultTypeInternal _GetDeviceIndicatorMetricPointListRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeviceIndicatorMetricPointFilter::DeviceIndicatorMetricPointFilter(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.indicator_id_)*/ {}
  ,/* _impl_._indicator_id_cached_byte_size_ = */ { 0 }

  , /*decltype(_impl_.metric_point_id_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeviceIndicatorMetricPointFilterDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeviceIndicatorMetricPointFilterDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeviceIndicatorMetricPointFilterDefaultTypeInternal() {}
  union {
    DeviceIndicatorMetricPointFilter _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeviceIndicatorMetricPointFilterDefaultTypeInternal _DeviceIndicatorMetricPointFilter_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeviceIndicatorMetricPointPaging::DeviceIndicatorMetricPointPaging(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.order_by_type_)*/ 0

  , /*decltype(_impl_.direction_type_)*/ 0

  , /*decltype(_impl_.limit_)*/ 0

  , /*decltype(_impl_.offset_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeviceIndicatorMetricPointPagingDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeviceIndicatorMetricPointPagingDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeviceIndicatorMetricPointPagingDefaultTypeInternal() {}
  union {
    DeviceIndicatorMetricPointPaging _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeviceIndicatorMetricPointPagingDefaultTypeInternal _DeviceIndicatorMetricPointPaging_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorMetricPointListResponse::GetDeviceIndicatorMetricPointListResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceIndicatorMetricPointListResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorMetricPointListResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorMetricPointListResponseDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorMetricPointListResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorMetricPointListResponseDefaultTypeInternal _GetDeviceIndicatorMetricPointListResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR DeviceIndicatorMetricPoint::DeviceIndicatorMetricPoint(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.metric_point_id_)*/ {
    &::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized {}
  }

  , /*decltype(_impl_.indicator_id_)*/ 0

  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DeviceIndicatorMetricPointDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DeviceIndicatorMetricPointDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~DeviceIndicatorMetricPointDefaultTypeInternal() {}
  union {
    DeviceIndicatorMetricPoint _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DeviceIndicatorMetricPointDefaultTypeInternal _DeviceIndicatorMetricPoint_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorMetricPointCountRequest::GetDeviceIndicatorMetricPointCountRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.filter_)*/nullptr} {}
struct GetDeviceIndicatorMetricPointCountRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorMetricPointCountRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorMetricPointCountRequestDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorMetricPointCountRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorMetricPointCountRequestDefaultTypeInternal _GetDeviceIndicatorMetricPointCountRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR GetDeviceIndicatorMetricPointCountResponse::GetDeviceIndicatorMetricPointCountResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct GetDeviceIndicatorMetricPointCountResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR GetDeviceIndicatorMetricPointCountResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~GetDeviceIndicatorMetricPointCountResponseDefaultTypeInternal() {}
  union {
    GetDeviceIndicatorMetricPointCountResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GetDeviceIndicatorMetricPointCountResponseDefaultTypeInternal _GetDeviceIndicatorMetricPointCountResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PutDeviceIndicatorMetricPointAttachRequest::PutDeviceIndicatorMetricPointAttachRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.device_indicator_metric_point_)*/nullptr} {}
struct PutDeviceIndicatorMetricPointAttachRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PutDeviceIndicatorMetricPointAttachRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PutDeviceIndicatorMetricPointAttachRequestDefaultTypeInternal() {}
  union {
    PutDeviceIndicatorMetricPointAttachRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PutDeviceIndicatorMetricPointAttachRequestDefaultTypeInternal _PutDeviceIndicatorMetricPointAttachRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PutDeviceIndicatorMetricPointAttachResponse::PutDeviceIndicatorMetricPointAttachResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PutDeviceIndicatorMetricPointAttachResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PutDeviceIndicatorMetricPointAttachResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PutDeviceIndicatorMetricPointAttachResponseDefaultTypeInternal() {}
  union {
    PutDeviceIndicatorMetricPointAttachResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PutDeviceIndicatorMetricPointAttachResponseDefaultTypeInternal _PutDeviceIndicatorMetricPointAttachResponse_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PutDeviceIndicatorMetricPointDetachRequest::PutDeviceIndicatorMetricPointDetachRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.device_indicator_metric_point_)*/nullptr} {}
struct PutDeviceIndicatorMetricPointDetachRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PutDeviceIndicatorMetricPointDetachRequestDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PutDeviceIndicatorMetricPointDetachRequestDefaultTypeInternal() {}
  union {
    PutDeviceIndicatorMetricPointDetachRequest _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PutDeviceIndicatorMetricPointDetachRequestDefaultTypeInternal _PutDeviceIndicatorMetricPointDetachRequest_default_instance_;
template <typename>
PROTOBUF_CONSTEXPR PutDeviceIndicatorMetricPointDetachResponse::PutDeviceIndicatorMetricPointDetachResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._cached_size_)*/{}} {}
struct PutDeviceIndicatorMetricPointDetachResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PutDeviceIndicatorMetricPointDetachResponseDefaultTypeInternal() : _instance(::_pbi::ConstantInitialized{}) {}
  ~PutDeviceIndicatorMetricPointDetachResponseDefaultTypeInternal() {}
  union {
    PutDeviceIndicatorMetricPointDetachResponse _instance;
  };
};

PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
    PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PutDeviceIndicatorMetricPointDetachResponseDefaultTypeInternal _PutDeviceIndicatorMetricPointDetachResponse_default_instance_;
}  // namespace v1
}  // namespace telemetry_control
}  // namespace keyapis
namespace keyapis {
namespace telemetry_control {
namespace v1 {
bool DeviceGroupPaging_OrderByType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    DeviceGroupPaging_OrderByType_strings[3] = {};

static const char DeviceGroupPaging_OrderByType_names[] = {
    "DEVICE_ID"
    "GROUP_ID"
    "ORDER_BY_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry DeviceGroupPaging_OrderByType_entries[] =
    {
        {{&DeviceGroupPaging_OrderByType_names[0], 9}, 2},
        {{&DeviceGroupPaging_OrderByType_names[9], 8}, 1},
        {{&DeviceGroupPaging_OrderByType_names[17], 21}, 0},
};

static const int DeviceGroupPaging_OrderByType_entries_by_number[] = {
    2,  // 0 -> ORDER_BY_TYPE_UNKNOWN
    1,  // 1 -> GROUP_ID
    0,  // 2 -> DEVICE_ID
};

const std::string& DeviceGroupPaging_OrderByType_Name(DeviceGroupPaging_OrderByType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          DeviceGroupPaging_OrderByType_entries, DeviceGroupPaging_OrderByType_entries_by_number,
          3, DeviceGroupPaging_OrderByType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      DeviceGroupPaging_OrderByType_entries, DeviceGroupPaging_OrderByType_entries_by_number, 3,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : DeviceGroupPaging_OrderByType_strings[idx].get();
}

bool DeviceGroupPaging_OrderByType_Parse(absl::string_view name, DeviceGroupPaging_OrderByType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      DeviceGroupPaging_OrderByType_entries, 3, name, &int_value);
  if (success) {
    *value = static_cast<DeviceGroupPaging_OrderByType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr DeviceGroupPaging_OrderByType DeviceGroupPaging::ORDER_BY_TYPE_UNKNOWN;
constexpr DeviceGroupPaging_OrderByType DeviceGroupPaging::GROUP_ID;
constexpr DeviceGroupPaging_OrderByType DeviceGroupPaging::DEVICE_ID;
constexpr DeviceGroupPaging_OrderByType DeviceGroupPaging::OrderByType_MIN;
constexpr DeviceGroupPaging_OrderByType DeviceGroupPaging::OrderByType_MAX;
constexpr int DeviceGroupPaging::OrderByType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool DeviceGroupPaging_DirectionType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    DeviceGroupPaging_DirectionType_strings[3] = {};

static const char DeviceGroupPaging_DirectionType_names[] = {
    "ASC"
    "DESC"
    "DIRECTION_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry DeviceGroupPaging_DirectionType_entries[] =
    {
        {{&DeviceGroupPaging_DirectionType_names[0], 3}, 2},
        {{&DeviceGroupPaging_DirectionType_names[3], 4}, 1},
        {{&DeviceGroupPaging_DirectionType_names[7], 22}, 0},
};

static const int DeviceGroupPaging_DirectionType_entries_by_number[] = {
    2,  // 0 -> DIRECTION_TYPE_UNKNOWN
    1,  // 1 -> DESC
    0,  // 2 -> ASC
};

const std::string& DeviceGroupPaging_DirectionType_Name(DeviceGroupPaging_DirectionType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          DeviceGroupPaging_DirectionType_entries, DeviceGroupPaging_DirectionType_entries_by_number,
          3, DeviceGroupPaging_DirectionType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      DeviceGroupPaging_DirectionType_entries, DeviceGroupPaging_DirectionType_entries_by_number, 3,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : DeviceGroupPaging_DirectionType_strings[idx].get();
}

bool DeviceGroupPaging_DirectionType_Parse(absl::string_view name, DeviceGroupPaging_DirectionType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      DeviceGroupPaging_DirectionType_entries, 3, name, &int_value);
  if (success) {
    *value = static_cast<DeviceGroupPaging_DirectionType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr DeviceGroupPaging_DirectionType DeviceGroupPaging::DIRECTION_TYPE_UNKNOWN;
constexpr DeviceGroupPaging_DirectionType DeviceGroupPaging::DESC;
constexpr DeviceGroupPaging_DirectionType DeviceGroupPaging::ASC;
constexpr DeviceGroupPaging_DirectionType DeviceGroupPaging::DirectionType_MIN;
constexpr DeviceGroupPaging_DirectionType DeviceGroupPaging::DirectionType_MAX;
constexpr int DeviceGroupPaging::DirectionType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool IndicatorPaging_OrderByType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    IndicatorPaging_OrderByType_strings[5] = {};

static const char IndicatorPaging_OrderByType_names[] = {
    "CREATED_AT"
    "DEVICE_ID"
    "ID"
    "ORDER_BY_TYPE_UNKNOWN"
    "SIGN_TYPE"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry IndicatorPaging_OrderByType_entries[] =
    {
        {{&IndicatorPaging_OrderByType_names[0], 10}, 4},
        {{&IndicatorPaging_OrderByType_names[10], 9}, 3},
        {{&IndicatorPaging_OrderByType_names[19], 2}, 1},
        {{&IndicatorPaging_OrderByType_names[21], 21}, 0},
        {{&IndicatorPaging_OrderByType_names[42], 9}, 2},
};

static const int IndicatorPaging_OrderByType_entries_by_number[] = {
    3,  // 0 -> ORDER_BY_TYPE_UNKNOWN
    2,  // 1 -> ID
    4,  // 2 -> SIGN_TYPE
    1,  // 3 -> DEVICE_ID
    0,  // 4 -> CREATED_AT
};

const std::string& IndicatorPaging_OrderByType_Name(IndicatorPaging_OrderByType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          IndicatorPaging_OrderByType_entries, IndicatorPaging_OrderByType_entries_by_number,
          5, IndicatorPaging_OrderByType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      IndicatorPaging_OrderByType_entries, IndicatorPaging_OrderByType_entries_by_number, 5,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : IndicatorPaging_OrderByType_strings[idx].get();
}

bool IndicatorPaging_OrderByType_Parse(absl::string_view name, IndicatorPaging_OrderByType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      IndicatorPaging_OrderByType_entries, 5, name, &int_value);
  if (success) {
    *value = static_cast<IndicatorPaging_OrderByType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr IndicatorPaging_OrderByType IndicatorPaging::ORDER_BY_TYPE_UNKNOWN;
constexpr IndicatorPaging_OrderByType IndicatorPaging::ID;
constexpr IndicatorPaging_OrderByType IndicatorPaging::SIGN_TYPE;
constexpr IndicatorPaging_OrderByType IndicatorPaging::DEVICE_ID;
constexpr IndicatorPaging_OrderByType IndicatorPaging::CREATED_AT;
constexpr IndicatorPaging_OrderByType IndicatorPaging::OrderByType_MIN;
constexpr IndicatorPaging_OrderByType IndicatorPaging::OrderByType_MAX;
constexpr int IndicatorPaging::OrderByType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool IndicatorPaging_DirectionType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    IndicatorPaging_DirectionType_strings[3] = {};

static const char IndicatorPaging_DirectionType_names[] = {
    "ASC"
    "DESC"
    "DIRECTION_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry IndicatorPaging_DirectionType_entries[] =
    {
        {{&IndicatorPaging_DirectionType_names[0], 3}, 2},
        {{&IndicatorPaging_DirectionType_names[3], 4}, 1},
        {{&IndicatorPaging_DirectionType_names[7], 22}, 0},
};

static const int IndicatorPaging_DirectionType_entries_by_number[] = {
    2,  // 0 -> DIRECTION_TYPE_UNKNOWN
    1,  // 1 -> DESC
    0,  // 2 -> ASC
};

const std::string& IndicatorPaging_DirectionType_Name(IndicatorPaging_DirectionType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          IndicatorPaging_DirectionType_entries, IndicatorPaging_DirectionType_entries_by_number,
          3, IndicatorPaging_DirectionType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      IndicatorPaging_DirectionType_entries, IndicatorPaging_DirectionType_entries_by_number, 3,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : IndicatorPaging_DirectionType_strings[idx].get();
}

bool IndicatorPaging_DirectionType_Parse(absl::string_view name, IndicatorPaging_DirectionType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      IndicatorPaging_DirectionType_entries, 3, name, &int_value);
  if (success) {
    *value = static_cast<IndicatorPaging_DirectionType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr IndicatorPaging_DirectionType IndicatorPaging::DIRECTION_TYPE_UNKNOWN;
constexpr IndicatorPaging_DirectionType IndicatorPaging::DESC;
constexpr IndicatorPaging_DirectionType IndicatorPaging::ASC;
constexpr IndicatorPaging_DirectionType IndicatorPaging::DirectionType_MIN;
constexpr IndicatorPaging_DirectionType IndicatorPaging::DirectionType_MAX;
constexpr int IndicatorPaging::DirectionType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Indicator_VendorType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Indicator_VendorType_strings[4] = {};

static const char Indicator_VendorType_names[] = {
    "ENVIRO"
    "LARTECH"
    "RTK"
    "VENDOR_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Indicator_VendorType_entries[] =
    {
        {{&Indicator_VendorType_names[0], 6}, 1},
        {{&Indicator_VendorType_names[6], 7}, 2},
        {{&Indicator_VendorType_names[13], 3}, 3},
        {{&Indicator_VendorType_names[16], 19}, 0},
};

static const int Indicator_VendorType_entries_by_number[] = {
    3,  // 0 -> VENDOR_TYPE_UNKNOWN
    0,  // 1 -> ENVIRO
    1,  // 2 -> LARTECH
    2,  // 3 -> RTK
};

const std::string& Indicator_VendorType_Name(Indicator_VendorType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Indicator_VendorType_entries, Indicator_VendorType_entries_by_number,
          4, Indicator_VendorType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Indicator_VendorType_entries, Indicator_VendorType_entries_by_number, 4,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Indicator_VendorType_strings[idx].get();
}

bool Indicator_VendorType_Parse(absl::string_view name, Indicator_VendorType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Indicator_VendorType_entries, 4, name, &int_value);
  if (success) {
    *value = static_cast<Indicator_VendorType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Indicator_VendorType Indicator::VENDOR_TYPE_UNKNOWN;
constexpr Indicator_VendorType Indicator::ENVIRO;
constexpr Indicator_VendorType Indicator::LARTECH;
constexpr Indicator_VendorType Indicator::RTK;
constexpr Indicator_VendorType Indicator::VendorType_MIN;
constexpr Indicator_VendorType Indicator::VendorType_MAX;
constexpr int Indicator::VendorType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Indicator_UnitType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
    case 21:
    case 22:
    case 23:
    case 24:
    case 25:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Indicator_UnitType_strings[26] = {};

static const char Indicator_UnitType_names[] = {
    "BOOLEAN"
    "C"
    "GJ"
    "GKAL"
    "H"
    "IMP"
    "J"
    "KGF_CM2"
    "KG_CM2"
    "KJ"
    "KWH"
    "KWT"
    "M3"
    "M3_H"
    "MIN"
    "MPA"
    "MS"
    "NON_MEASURABLE"
    "PERCENT"
    "S"
    "T"
    "T_H"
    "UNIT_TYPE_UNKNOWN"
    "VALUE"
    "WT"
    "WTH"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Indicator_UnitType_entries[] =
    {
        {{&Indicator_UnitType_names[0], 7}, 13},
        {{&Indicator_UnitType_names[7], 1}, 2},
        {{&Indicator_UnitType_names[8], 2}, 21},
        {{&Indicator_UnitType_names[10], 4}, 4},
        {{&Indicator_UnitType_names[14], 1}, 16},
        {{&Indicator_UnitType_names[15], 3}, 18},
        {{&Indicator_UnitType_names[18], 1}, 19},
        {{&Indicator_UnitType_names[19], 7}, 8},
        {{&Indicator_UnitType_names[26], 6}, 7},
        {{&Indicator_UnitType_names[32], 2}, 20},
        {{&Indicator_UnitType_names[34], 3}, 6},
        {{&Indicator_UnitType_names[37], 3}, 23},
        {{&Indicator_UnitType_names[40], 2}, 9},
        {{&Indicator_UnitType_names[42], 4}, 10},
        {{&Indicator_UnitType_names[46], 3}, 24},
        {{&Indicator_UnitType_names[49], 3}, 11},
        {{&Indicator_UnitType_names[52], 2}, 12},
        {{&Indicator_UnitType_names[54], 14}, 17},
        {{&Indicator_UnitType_names[68], 7}, 1},
        {{&Indicator_UnitType_names[75], 1}, 25},
        {{&Indicator_UnitType_names[76], 1}, 14},
        {{&Indicator_UnitType_names[77], 3}, 15},
        {{&Indicator_UnitType_names[80], 17}, 0},
        {{&Indicator_UnitType_names[97], 5}, 5},
        {{&Indicator_UnitType_names[102], 2}, 3},
        {{&Indicator_UnitType_names[104], 3}, 22},
};

static const int Indicator_UnitType_entries_by_number[] = {
    22,  // 0 -> UNIT_TYPE_UNKNOWN
    18,  // 1 -> PERCENT
    1,  // 2 -> C
    24,  // 3 -> WT
    3,  // 4 -> GKAL
    23,  // 5 -> VALUE
    10,  // 6 -> KWH
    8,  // 7 -> KG_CM2
    7,  // 8 -> KGF_CM2
    12,  // 9 -> M3
    13,  // 10 -> M3_H
    15,  // 11 -> MPA
    16,  // 12 -> MS
    0,  // 13 -> BOOLEAN
    20,  // 14 -> T
    21,  // 15 -> T_H
    4,  // 16 -> H
    17,  // 17 -> NON_MEASURABLE
    5,  // 18 -> IMP
    6,  // 19 -> J
    9,  // 20 -> KJ
    2,  // 21 -> GJ
    25,  // 22 -> WTH
    11,  // 23 -> KWT
    14,  // 24 -> MIN
    19,  // 25 -> S
};

const std::string& Indicator_UnitType_Name(Indicator_UnitType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Indicator_UnitType_entries, Indicator_UnitType_entries_by_number,
          26, Indicator_UnitType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Indicator_UnitType_entries, Indicator_UnitType_entries_by_number, 26,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Indicator_UnitType_strings[idx].get();
}

bool Indicator_UnitType_Parse(absl::string_view name, Indicator_UnitType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Indicator_UnitType_entries, 26, name, &int_value);
  if (success) {
    *value = static_cast<Indicator_UnitType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Indicator_UnitType Indicator::UNIT_TYPE_UNKNOWN;
constexpr Indicator_UnitType Indicator::PERCENT;
constexpr Indicator_UnitType Indicator::C;
constexpr Indicator_UnitType Indicator::WT;
constexpr Indicator_UnitType Indicator::GKAL;
constexpr Indicator_UnitType Indicator::VALUE;
constexpr Indicator_UnitType Indicator::KWH;
constexpr Indicator_UnitType Indicator::KG_CM2;
constexpr Indicator_UnitType Indicator::KGF_CM2;
constexpr Indicator_UnitType Indicator::M3;
constexpr Indicator_UnitType Indicator::M3_H;
constexpr Indicator_UnitType Indicator::MPA;
constexpr Indicator_UnitType Indicator::MS;
constexpr Indicator_UnitType Indicator::BOOLEAN;
constexpr Indicator_UnitType Indicator::T;
constexpr Indicator_UnitType Indicator::T_H;
constexpr Indicator_UnitType Indicator::H;
constexpr Indicator_UnitType Indicator::NON_MEASURABLE;
constexpr Indicator_UnitType Indicator::IMP;
constexpr Indicator_UnitType Indicator::J;
constexpr Indicator_UnitType Indicator::KJ;
constexpr Indicator_UnitType Indicator::GJ;
constexpr Indicator_UnitType Indicator::WTH;
constexpr Indicator_UnitType Indicator::KWT;
constexpr Indicator_UnitType Indicator::MIN;
constexpr Indicator_UnitType Indicator::S;
constexpr Indicator_UnitType Indicator::UnitType_MIN;
constexpr Indicator_UnitType Indicator::UnitType_MAX;
constexpr int Indicator::UnitType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Indicator_SignType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Indicator_SignType_strings[10] = {};

static const char Indicator_SignType_names[] = {
    "ABSOLUTE_DS"
    "ABSOLUTE_RC"
    "CURRENT_DS"
    "CURRENT_RS"
    "FLAG"
    "INTERVAL_DS"
    "INTERVAL_RC"
    "PARAMETER"
    "SIGN_TYPE_UNKNOWN"
    "VOLUME"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Indicator_SignType_entries[] =
    {
        {{&Indicator_SignType_names[0], 11}, 1},
        {{&Indicator_SignType_names[11], 11}, 2},
        {{&Indicator_SignType_names[22], 10}, 5},
        {{&Indicator_SignType_names[32], 10}, 6},
        {{&Indicator_SignType_names[42], 4}, 9},
        {{&Indicator_SignType_names[46], 11}, 3},
        {{&Indicator_SignType_names[57], 11}, 4},
        {{&Indicator_SignType_names[68], 9}, 8},
        {{&Indicator_SignType_names[77], 17}, 0},
        {{&Indicator_SignType_names[94], 6}, 7},
};

static const int Indicator_SignType_entries_by_number[] = {
    8,  // 0 -> SIGN_TYPE_UNKNOWN
    0,  // 1 -> ABSOLUTE_DS
    1,  // 2 -> ABSOLUTE_RC
    5,  // 3 -> INTERVAL_DS
    6,  // 4 -> INTERVAL_RC
    2,  // 5 -> CURRENT_DS
    3,  // 6 -> CURRENT_RS
    9,  // 7 -> VOLUME
    7,  // 8 -> PARAMETER
    4,  // 9 -> FLAG
};

const std::string& Indicator_SignType_Name(Indicator_SignType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Indicator_SignType_entries, Indicator_SignType_entries_by_number,
          10, Indicator_SignType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Indicator_SignType_entries, Indicator_SignType_entries_by_number, 10,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Indicator_SignType_strings[idx].get();
}

bool Indicator_SignType_Parse(absl::string_view name, Indicator_SignType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Indicator_SignType_entries, 10, name, &int_value);
  if (success) {
    *value = static_cast<Indicator_SignType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Indicator_SignType Indicator::SIGN_TYPE_UNKNOWN;
constexpr Indicator_SignType Indicator::ABSOLUTE_DS;
constexpr Indicator_SignType Indicator::ABSOLUTE_RC;
constexpr Indicator_SignType Indicator::INTERVAL_DS;
constexpr Indicator_SignType Indicator::INTERVAL_RC;
constexpr Indicator_SignType Indicator::CURRENT_DS;
constexpr Indicator_SignType Indicator::CURRENT_RS;
constexpr Indicator_SignType Indicator::VOLUME;
constexpr Indicator_SignType Indicator::PARAMETER;
constexpr Indicator_SignType Indicator::FLAG;
constexpr Indicator_SignType Indicator::SignType_MIN;
constexpr Indicator_SignType Indicator::SignType_MAX;
constexpr int Indicator::SignType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Indicator_ArchiveType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Indicator_ArchiveType_strings[7] = {};

static const char Indicator_ArchiveType_names[] = {
    "ARCHIVE_TYPE_UNKNOWN"
    "CURRENT"
    "DAY"
    "HALFHOUR"
    "HOUR"
    "MONTH"
    "YEAR"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Indicator_ArchiveType_entries[] =
    {
        {{&Indicator_ArchiveType_names[0], 20}, 0},
        {{&Indicator_ArchiveType_names[20], 7}, 1},
        {{&Indicator_ArchiveType_names[27], 3}, 4},
        {{&Indicator_ArchiveType_names[30], 8}, 2},
        {{&Indicator_ArchiveType_names[38], 4}, 3},
        {{&Indicator_ArchiveType_names[42], 5}, 5},
        {{&Indicator_ArchiveType_names[47], 4}, 6},
};

static const int Indicator_ArchiveType_entries_by_number[] = {
    0,  // 0 -> ARCHIVE_TYPE_UNKNOWN
    1,  // 1 -> CURRENT
    3,  // 2 -> HALFHOUR
    4,  // 3 -> HOUR
    2,  // 4 -> DAY
    5,  // 5 -> MONTH
    6,  // 6 -> YEAR
};

const std::string& Indicator_ArchiveType_Name(Indicator_ArchiveType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Indicator_ArchiveType_entries, Indicator_ArchiveType_entries_by_number,
          7, Indicator_ArchiveType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Indicator_ArchiveType_entries, Indicator_ArchiveType_entries_by_number, 7,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Indicator_ArchiveType_strings[idx].get();
}

bool Indicator_ArchiveType_Parse(absl::string_view name, Indicator_ArchiveType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Indicator_ArchiveType_entries, 7, name, &int_value);
  if (success) {
    *value = static_cast<Indicator_ArchiveType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Indicator_ArchiveType Indicator::ARCHIVE_TYPE_UNKNOWN;
constexpr Indicator_ArchiveType Indicator::CURRENT;
constexpr Indicator_ArchiveType Indicator::HALFHOUR;
constexpr Indicator_ArchiveType Indicator::HOUR;
constexpr Indicator_ArchiveType Indicator::DAY;
constexpr Indicator_ArchiveType Indicator::MONTH;
constexpr Indicator_ArchiveType Indicator::YEAR;
constexpr Indicator_ArchiveType Indicator::ArchiveType_MIN;
constexpr Indicator_ArchiveType Indicator::ArchiveType_MAX;
constexpr int Indicator::ArchiveType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Device_MetricPoint_MetricType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Device_MetricPoint_MetricType_strings[6] = {};

static const char Device_MetricPoint_MetricType_names[] = {
    "COLD_WATER"
    "ELECTRICITY"
    "GAS"
    "HEAT"
    "HOT_WATER"
    "METRIC_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Device_MetricPoint_MetricType_entries[] =
    {
        {{&Device_MetricPoint_MetricType_names[0], 10}, 2},
        {{&Device_MetricPoint_MetricType_names[10], 11}, 5},
        {{&Device_MetricPoint_MetricType_names[21], 3}, 4},
        {{&Device_MetricPoint_MetricType_names[24], 4}, 3},
        {{&Device_MetricPoint_MetricType_names[28], 9}, 1},
        {{&Device_MetricPoint_MetricType_names[37], 19}, 0},
};

static const int Device_MetricPoint_MetricType_entries_by_number[] = {
    5,  // 0 -> METRIC_TYPE_UNKNOWN
    4,  // 1 -> HOT_WATER
    0,  // 2 -> COLD_WATER
    3,  // 3 -> HEAT
    2,  // 4 -> GAS
    1,  // 5 -> ELECTRICITY
};

const std::string& Device_MetricPoint_MetricType_Name(Device_MetricPoint_MetricType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Device_MetricPoint_MetricType_entries, Device_MetricPoint_MetricType_entries_by_number,
          6, Device_MetricPoint_MetricType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Device_MetricPoint_MetricType_entries, Device_MetricPoint_MetricType_entries_by_number, 6,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Device_MetricPoint_MetricType_strings[idx].get();
}

bool Device_MetricPoint_MetricType_Parse(absl::string_view name, Device_MetricPoint_MetricType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Device_MetricPoint_MetricType_entries, 6, name, &int_value);
  if (success) {
    *value = static_cast<Device_MetricPoint_MetricType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Device_MetricPoint_MetricType Device_MetricPoint::METRIC_TYPE_UNKNOWN;
constexpr Device_MetricPoint_MetricType Device_MetricPoint::HOT_WATER;
constexpr Device_MetricPoint_MetricType Device_MetricPoint::COLD_WATER;
constexpr Device_MetricPoint_MetricType Device_MetricPoint::HEAT;
constexpr Device_MetricPoint_MetricType Device_MetricPoint::GAS;
constexpr Device_MetricPoint_MetricType Device_MetricPoint::ELECTRICITY;
constexpr Device_MetricPoint_MetricType Device_MetricPoint::MetricType_MIN;
constexpr Device_MetricPoint_MetricType Device_MetricPoint::MetricType_MAX;
constexpr int Device_MetricPoint::MetricType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Device_MetricPoint_StatusType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Device_MetricPoint_StatusType_strings[4] = {};

static const char Device_MetricPoint_StatusType_names[] = {
    "ACTIVE"
    "ARCHIVE"
    "STATUS_TYPE_UNKNOWN"
    "WRONG"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Device_MetricPoint_StatusType_entries[] =
    {
        {{&Device_MetricPoint_StatusType_names[0], 6}, 1},
        {{&Device_MetricPoint_StatusType_names[6], 7}, 3},
        {{&Device_MetricPoint_StatusType_names[13], 19}, 0},
        {{&Device_MetricPoint_StatusType_names[32], 5}, 2},
};

static const int Device_MetricPoint_StatusType_entries_by_number[] = {
    2,  // 0 -> STATUS_TYPE_UNKNOWN
    0,  // 1 -> ACTIVE
    3,  // 2 -> WRONG
    1,  // 3 -> ARCHIVE
};

const std::string& Device_MetricPoint_StatusType_Name(Device_MetricPoint_StatusType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Device_MetricPoint_StatusType_entries, Device_MetricPoint_StatusType_entries_by_number,
          4, Device_MetricPoint_StatusType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Device_MetricPoint_StatusType_entries, Device_MetricPoint_StatusType_entries_by_number, 4,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Device_MetricPoint_StatusType_strings[idx].get();
}

bool Device_MetricPoint_StatusType_Parse(absl::string_view name, Device_MetricPoint_StatusType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Device_MetricPoint_StatusType_entries, 4, name, &int_value);
  if (success) {
    *value = static_cast<Device_MetricPoint_StatusType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Device_MetricPoint_StatusType Device_MetricPoint::STATUS_TYPE_UNKNOWN;
constexpr Device_MetricPoint_StatusType Device_MetricPoint::ACTIVE;
constexpr Device_MetricPoint_StatusType Device_MetricPoint::WRONG;
constexpr Device_MetricPoint_StatusType Device_MetricPoint::ARCHIVE;
constexpr Device_MetricPoint_StatusType Device_MetricPoint::StatusType_MIN;
constexpr Device_MetricPoint_StatusType Device_MetricPoint::StatusType_MAX;
constexpr int Device_MetricPoint::StatusType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Device_MetricPoint_AccountingType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Device_MetricPoint_AccountingType_strings[3] = {};

static const char Device_MetricPoint_AccountingType_names[] = {
    "ACCOUNTING_TYPE_UNKNOWN"
    "COMMERCIAL"
    "TECHNICAL"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Device_MetricPoint_AccountingType_entries[] =
    {
        {{&Device_MetricPoint_AccountingType_names[0], 23}, 0},
        {{&Device_MetricPoint_AccountingType_names[23], 10}, 1},
        {{&Device_MetricPoint_AccountingType_names[33], 9}, 2},
};

static const int Device_MetricPoint_AccountingType_entries_by_number[] = {
    0,  // 0 -> ACCOUNTING_TYPE_UNKNOWN
    1,  // 1 -> COMMERCIAL
    2,  // 2 -> TECHNICAL
};

const std::string& Device_MetricPoint_AccountingType_Name(Device_MetricPoint_AccountingType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Device_MetricPoint_AccountingType_entries, Device_MetricPoint_AccountingType_entries_by_number,
          3, Device_MetricPoint_AccountingType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Device_MetricPoint_AccountingType_entries, Device_MetricPoint_AccountingType_entries_by_number, 3,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Device_MetricPoint_AccountingType_strings[idx].get();
}

bool Device_MetricPoint_AccountingType_Parse(absl::string_view name, Device_MetricPoint_AccountingType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Device_MetricPoint_AccountingType_entries, 3, name, &int_value);
  if (success) {
    *value = static_cast<Device_MetricPoint_AccountingType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Device_MetricPoint_AccountingType Device_MetricPoint::ACCOUNTING_TYPE_UNKNOWN;
constexpr Device_MetricPoint_AccountingType Device_MetricPoint::COMMERCIAL;
constexpr Device_MetricPoint_AccountingType Device_MetricPoint::TECHNICAL;
constexpr Device_MetricPoint_AccountingType Device_MetricPoint::AccountingType_MIN;
constexpr Device_MetricPoint_AccountingType Device_MetricPoint::AccountingType_MAX;
constexpr int Device_MetricPoint::AccountingType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Device_MetricPoint_PrimaryCurrentType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
    case 21:
    case 22:
    case 23:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Device_MetricPoint_PrimaryCurrentType_strings[24] = {};

static const char Device_MetricPoint_PrimaryCurrentType_names[] = {
    "PRIMARY_CURRENT_TYPE_UNKNOWN"
    "TT1000A"
    "TT100A"
    "TT10A"
    "TT1200A"
    "TT1500A"
    "TT150A"
    "TT15A"
    "TT1A"
    "TT2000A"
    "TT200A"
    "TT20A"
    "TT300A"
    "TT30A"
    "TT400A"
    "TT40A"
    "TT500A"
    "TT50A"
    "TT5A"
    "TT600A"
    "TT750A"
    "TT75A"
    "TT800A"
    "TT80A"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Device_MetricPoint_PrimaryCurrentType_entries[] =
    {
        {{&Device_MetricPoint_PrimaryCurrentType_names[0], 28}, 0},
        {{&Device_MetricPoint_PrimaryCurrentType_names[28], 7}, 20},
        {{&Device_MetricPoint_PrimaryCurrentType_names[35], 6}, 11},
        {{&Device_MetricPoint_PrimaryCurrentType_names[41], 5}, 3},
        {{&Device_MetricPoint_PrimaryCurrentType_names[46], 7}, 21},
        {{&Device_MetricPoint_PrimaryCurrentType_names[53], 7}, 22},
        {{&Device_MetricPoint_PrimaryCurrentType_names[60], 6}, 12},
        {{&Device_MetricPoint_PrimaryCurrentType_names[66], 5}, 4},
        {{&Device_MetricPoint_PrimaryCurrentType_names[71], 4}, 1},
        {{&Device_MetricPoint_PrimaryCurrentType_names[75], 7}, 23},
        {{&Device_MetricPoint_PrimaryCurrentType_names[82], 6}, 13},
        {{&Device_MetricPoint_PrimaryCurrentType_names[88], 5}, 5},
        {{&Device_MetricPoint_PrimaryCurrentType_names[93], 6}, 14},
        {{&Device_MetricPoint_PrimaryCurrentType_names[99], 5}, 6},
        {{&Device_MetricPoint_PrimaryCurrentType_names[104], 6}, 15},
        {{&Device_MetricPoint_PrimaryCurrentType_names[110], 5}, 7},
        {{&Device_MetricPoint_PrimaryCurrentType_names[115], 6}, 16},
        {{&Device_MetricPoint_PrimaryCurrentType_names[121], 5}, 8},
        {{&Device_MetricPoint_PrimaryCurrentType_names[126], 4}, 2},
        {{&Device_MetricPoint_PrimaryCurrentType_names[130], 6}, 17},
        {{&Device_MetricPoint_PrimaryCurrentType_names[136], 6}, 18},
        {{&Device_MetricPoint_PrimaryCurrentType_names[142], 5}, 9},
        {{&Device_MetricPoint_PrimaryCurrentType_names[147], 6}, 19},
        {{&Device_MetricPoint_PrimaryCurrentType_names[153], 5}, 10},
};

static const int Device_MetricPoint_PrimaryCurrentType_entries_by_number[] = {
    0,  // 0 -> PRIMARY_CURRENT_TYPE_UNKNOWN
    8,  // 1 -> TT1A
    18,  // 2 -> TT5A
    3,  // 3 -> TT10A
    7,  // 4 -> TT15A
    11,  // 5 -> TT20A
    13,  // 6 -> TT30A
    15,  // 7 -> TT40A
    17,  // 8 -> TT50A
    21,  // 9 -> TT75A
    23,  // 10 -> TT80A
    2,  // 11 -> TT100A
    6,  // 12 -> TT150A
    10,  // 13 -> TT200A
    12,  // 14 -> TT300A
    14,  // 15 -> TT400A
    16,  // 16 -> TT500A
    19,  // 17 -> TT600A
    20,  // 18 -> TT750A
    22,  // 19 -> TT800A
    1,  // 20 -> TT1000A
    4,  // 21 -> TT1200A
    5,  // 22 -> TT1500A
    9,  // 23 -> TT2000A
};

const std::string& Device_MetricPoint_PrimaryCurrentType_Name(Device_MetricPoint_PrimaryCurrentType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Device_MetricPoint_PrimaryCurrentType_entries, Device_MetricPoint_PrimaryCurrentType_entries_by_number,
          24, Device_MetricPoint_PrimaryCurrentType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Device_MetricPoint_PrimaryCurrentType_entries, Device_MetricPoint_PrimaryCurrentType_entries_by_number, 24,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Device_MetricPoint_PrimaryCurrentType_strings[idx].get();
}

bool Device_MetricPoint_PrimaryCurrentType_Parse(absl::string_view name, Device_MetricPoint_PrimaryCurrentType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Device_MetricPoint_PrimaryCurrentType_entries, 24, name, &int_value);
  if (success) {
    *value = static_cast<Device_MetricPoint_PrimaryCurrentType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::PRIMARY_CURRENT_TYPE_UNKNOWN;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT1A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT5A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT10A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT15A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT20A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT30A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT40A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT50A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT75A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT80A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT100A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT150A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT200A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT300A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT400A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT500A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT600A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT750A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT800A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT1000A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT1200A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT1500A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::TT2000A;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::PrimaryCurrentType_MIN;
constexpr Device_MetricPoint_PrimaryCurrentType Device_MetricPoint::PrimaryCurrentType_MAX;
constexpr int Device_MetricPoint::PrimaryCurrentType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Device_SecondaryCurrentType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Device_SecondaryCurrentType_strings[4] = {};

static const char Device_SecondaryCurrentType_names[] = {
    "SECONDARY_CURRENT_TYPE_UNKNOWN"
    "TT1A"
    "TT2A"
    "TT5A"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Device_SecondaryCurrentType_entries[] =
    {
        {{&Device_SecondaryCurrentType_names[0], 30}, 0},
        {{&Device_SecondaryCurrentType_names[30], 4}, 1},
        {{&Device_SecondaryCurrentType_names[34], 4}, 2},
        {{&Device_SecondaryCurrentType_names[38], 4}, 3},
};

static const int Device_SecondaryCurrentType_entries_by_number[] = {
    0,  // 0 -> SECONDARY_CURRENT_TYPE_UNKNOWN
    1,  // 1 -> TT1A
    2,  // 2 -> TT2A
    3,  // 3 -> TT5A
};

const std::string& Device_SecondaryCurrentType_Name(Device_SecondaryCurrentType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Device_SecondaryCurrentType_entries, Device_SecondaryCurrentType_entries_by_number,
          4, Device_SecondaryCurrentType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Device_SecondaryCurrentType_entries, Device_SecondaryCurrentType_entries_by_number, 4,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Device_SecondaryCurrentType_strings[idx].get();
}

bool Device_SecondaryCurrentType_Parse(absl::string_view name, Device_SecondaryCurrentType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Device_SecondaryCurrentType_entries, 4, name, &int_value);
  if (success) {
    *value = static_cast<Device_SecondaryCurrentType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Device_SecondaryCurrentType Device::SECONDARY_CURRENT_TYPE_UNKNOWN;
constexpr Device_SecondaryCurrentType Device::TT1A;
constexpr Device_SecondaryCurrentType Device::TT2A;
constexpr Device_SecondaryCurrentType Device::TT5A;
constexpr Device_SecondaryCurrentType Device::SecondaryCurrentType_MIN;
constexpr Device_SecondaryCurrentType Device::SecondaryCurrentType_MAX;
constexpr int Device::SecondaryCurrentType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Device_Type_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Device_Type_strings[9] = {};

static const char Device_Type_names[] = {
    "BASE_LR"
    "COMMUNICATION_MODULE_LR"
    "HUB"
    "INTERFACE_CONVERTER"
    "METERING_DEVICE"
    "M_BUS_HUB"
    "PULSE_COUNTER_RECORDER"
    "PULSE_COUNTER_RECORDER_LR"
    "TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Device_Type_entries[] =
    {
        {{&Device_Type_names[0], 7}, 8},
        {{&Device_Type_names[7], 23}, 7},
        {{&Device_Type_names[30], 3}, 1},
        {{&Device_Type_names[33], 19}, 5},
        {{&Device_Type_names[52], 15}, 4},
        {{&Device_Type_names[67], 9}, 6},
        {{&Device_Type_names[76], 22}, 2},
        {{&Device_Type_names[98], 25}, 3},
        {{&Device_Type_names[123], 12}, 0},
};

static const int Device_Type_entries_by_number[] = {
    8,  // 0 -> TYPE_UNKNOWN
    2,  // 1 -> HUB
    6,  // 2 -> PULSE_COUNTER_RECORDER
    7,  // 3 -> PULSE_COUNTER_RECORDER_LR
    4,  // 4 -> METERING_DEVICE
    3,  // 5 -> INTERFACE_CONVERTER
    5,  // 6 -> M_BUS_HUB
    1,  // 7 -> COMMUNICATION_MODULE_LR
    0,  // 8 -> BASE_LR
};

const std::string& Device_Type_Name(Device_Type value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Device_Type_entries, Device_Type_entries_by_number,
          9, Device_Type_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Device_Type_entries, Device_Type_entries_by_number, 9,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Device_Type_strings[idx].get();
}

bool Device_Type_Parse(absl::string_view name, Device_Type* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Device_Type_entries, 9, name, &int_value);
  if (success) {
    *value = static_cast<Device_Type>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Device_Type Device::TYPE_UNKNOWN;
constexpr Device_Type Device::HUB;
constexpr Device_Type Device::PULSE_COUNTER_RECORDER;
constexpr Device_Type Device::PULSE_COUNTER_RECORDER_LR;
constexpr Device_Type Device::METERING_DEVICE;
constexpr Device_Type Device::INTERFACE_CONVERTER;
constexpr Device_Type Device::M_BUS_HUB;
constexpr Device_Type Device::COMMUNICATION_MODULE_LR;
constexpr Device_Type Device::BASE_LR;
constexpr Device_Type Device::Type_MIN;
constexpr Device_Type Device::Type_MAX;
constexpr int Device::Type_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Device_StatusType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Device_StatusType_strings[7] = {};

static const char Device_StatusType_names[] = {
    "ACTIVE"
    "ARCHIVE"
    "DELETE"
    "RECEIVED"
    "STATUS_TYPE_UNKNOWN"
    "UNLINK"
    "WRONG"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Device_StatusType_entries[] =
    {
        {{&Device_StatusType_names[0], 6}, 2},
        {{&Device_StatusType_names[6], 7}, 4},
        {{&Device_StatusType_names[13], 6}, 5},
        {{&Device_StatusType_names[19], 8}, 1},
        {{&Device_StatusType_names[27], 19}, 0},
        {{&Device_StatusType_names[46], 6}, 6},
        {{&Device_StatusType_names[52], 5}, 3},
};

static const int Device_StatusType_entries_by_number[] = {
    4,  // 0 -> STATUS_TYPE_UNKNOWN
    3,  // 1 -> RECEIVED
    0,  // 2 -> ACTIVE
    6,  // 3 -> WRONG
    1,  // 4 -> ARCHIVE
    2,  // 5 -> DELETE
    5,  // 6 -> UNLINK
};

const std::string& Device_StatusType_Name(Device_StatusType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Device_StatusType_entries, Device_StatusType_entries_by_number,
          7, Device_StatusType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Device_StatusType_entries, Device_StatusType_entries_by_number, 7,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Device_StatusType_strings[idx].get();
}

bool Device_StatusType_Parse(absl::string_view name, Device_StatusType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Device_StatusType_entries, 7, name, &int_value);
  if (success) {
    *value = static_cast<Device_StatusType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Device_StatusType Device::STATUS_TYPE_UNKNOWN;
constexpr Device_StatusType Device::RECEIVED;
constexpr Device_StatusType Device::ACTIVE;
constexpr Device_StatusType Device::WRONG;
constexpr Device_StatusType Device::ARCHIVE;
constexpr Device_StatusType Device::DELETE;
constexpr Device_StatusType Device::UNLINK;
constexpr Device_StatusType Device::StatusType_MIN;
constexpr Device_StatusType Device::StatusType_MAX;
constexpr int Device::StatusType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Device_PlanType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Device_PlanType_strings[4] = {};

static const char Device_PlanType_names[] = {
    "DOUBLE"
    "PLAN_TYPE_UNKNOWN"
    "SINGLE"
    "TRIPLE"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Device_PlanType_entries[] =
    {
        {{&Device_PlanType_names[0], 6}, 2},
        {{&Device_PlanType_names[6], 17}, 0},
        {{&Device_PlanType_names[23], 6}, 1},
        {{&Device_PlanType_names[29], 6}, 3},
};

static const int Device_PlanType_entries_by_number[] = {
    1,  // 0 -> PLAN_TYPE_UNKNOWN
    2,  // 1 -> SINGLE
    0,  // 2 -> DOUBLE
    3,  // 3 -> TRIPLE
};

const std::string& Device_PlanType_Name(Device_PlanType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Device_PlanType_entries, Device_PlanType_entries_by_number,
          4, Device_PlanType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Device_PlanType_entries, Device_PlanType_entries_by_number, 4,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Device_PlanType_strings[idx].get();
}

bool Device_PlanType_Parse(absl::string_view name, Device_PlanType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Device_PlanType_entries, 4, name, &int_value);
  if (success) {
    *value = static_cast<Device_PlanType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Device_PlanType Device::PLAN_TYPE_UNKNOWN;
constexpr Device_PlanType Device::SINGLE;
constexpr Device_PlanType Device::DOUBLE;
constexpr Device_PlanType Device::TRIPLE;
constexpr Device_PlanType Device::PlanType_MIN;
constexpr Device_PlanType Device::PlanType_MAX;
constexpr int Device::PlanType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool Device_PipeType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    Device_PipeType_strings[3] = {};

static const char Device_PipeType_names[] = {
    "CIRCULATING"
    "INFEED"
    "PIPE_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry Device_PipeType_entries[] =
    {
        {{&Device_PipeType_names[0], 11}, 2},
        {{&Device_PipeType_names[11], 6}, 1},
        {{&Device_PipeType_names[17], 17}, 0},
};

static const int Device_PipeType_entries_by_number[] = {
    2,  // 0 -> PIPE_TYPE_UNKNOWN
    1,  // 1 -> INFEED
    0,  // 2 -> CIRCULATING
};

const std::string& Device_PipeType_Name(Device_PipeType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          Device_PipeType_entries, Device_PipeType_entries_by_number,
          3, Device_PipeType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      Device_PipeType_entries, Device_PipeType_entries_by_number, 3,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : Device_PipeType_strings[idx].get();
}

bool Device_PipeType_Parse(absl::string_view name, Device_PipeType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      Device_PipeType_entries, 3, name, &int_value);
  if (success) {
    *value = static_cast<Device_PipeType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr Device_PipeType Device::PIPE_TYPE_UNKNOWN;
constexpr Device_PipeType Device::INFEED;
constexpr Device_PipeType Device::CIRCULATING;
constexpr Device_PipeType Device::PipeType_MIN;
constexpr Device_PipeType Device::PipeType_MAX;
constexpr int Device::PipeType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool DevicePaging_OrderByType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    DevicePaging_OrderByType_strings[2] = {};

static const char DevicePaging_OrderByType_names[] = {
    "ID"
    "ORDER_BY_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry DevicePaging_OrderByType_entries[] =
    {
        {{&DevicePaging_OrderByType_names[0], 2}, 1},
        {{&DevicePaging_OrderByType_names[2], 21}, 0},
};

static const int DevicePaging_OrderByType_entries_by_number[] = {
    1,  // 0 -> ORDER_BY_TYPE_UNKNOWN
    0,  // 1 -> ID
};

const std::string& DevicePaging_OrderByType_Name(DevicePaging_OrderByType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          DevicePaging_OrderByType_entries, DevicePaging_OrderByType_entries_by_number,
          2, DevicePaging_OrderByType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      DevicePaging_OrderByType_entries, DevicePaging_OrderByType_entries_by_number, 2,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : DevicePaging_OrderByType_strings[idx].get();
}

bool DevicePaging_OrderByType_Parse(absl::string_view name, DevicePaging_OrderByType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      DevicePaging_OrderByType_entries, 2, name, &int_value);
  if (success) {
    *value = static_cast<DevicePaging_OrderByType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr DevicePaging_OrderByType DevicePaging::ORDER_BY_TYPE_UNKNOWN;
constexpr DevicePaging_OrderByType DevicePaging::ID;
constexpr DevicePaging_OrderByType DevicePaging::OrderByType_MIN;
constexpr DevicePaging_OrderByType DevicePaging::OrderByType_MAX;
constexpr int DevicePaging::OrderByType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool DevicePaging_DirectionType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    DevicePaging_DirectionType_strings[3] = {};

static const char DevicePaging_DirectionType_names[] = {
    "ASC"
    "DESC"
    "DIRECTION_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry DevicePaging_DirectionType_entries[] =
    {
        {{&DevicePaging_DirectionType_names[0], 3}, 2},
        {{&DevicePaging_DirectionType_names[3], 4}, 1},
        {{&DevicePaging_DirectionType_names[7], 22}, 0},
};

static const int DevicePaging_DirectionType_entries_by_number[] = {
    2,  // 0 -> DIRECTION_TYPE_UNKNOWN
    1,  // 1 -> DESC
    0,  // 2 -> ASC
};

const std::string& DevicePaging_DirectionType_Name(DevicePaging_DirectionType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          DevicePaging_DirectionType_entries, DevicePaging_DirectionType_entries_by_number,
          3, DevicePaging_DirectionType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      DevicePaging_DirectionType_entries, DevicePaging_DirectionType_entries_by_number, 3,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : DevicePaging_DirectionType_strings[idx].get();
}

bool DevicePaging_DirectionType_Parse(absl::string_view name, DevicePaging_DirectionType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      DevicePaging_DirectionType_entries, 3, name, &int_value);
  if (success) {
    *value = static_cast<DevicePaging_DirectionType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr DevicePaging_DirectionType DevicePaging::DIRECTION_TYPE_UNKNOWN;
constexpr DevicePaging_DirectionType DevicePaging::DESC;
constexpr DevicePaging_DirectionType DevicePaging::ASC;
constexpr DevicePaging_DirectionType DevicePaging::DirectionType_MIN;
constexpr DevicePaging_DirectionType DevicePaging::DirectionType_MAX;
constexpr int DevicePaging::DirectionType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool DeviceIndicatorMetricPointPaging_OrderByType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    DeviceIndicatorMetricPointPaging_OrderByType_strings[3] = {};

static const char DeviceIndicatorMetricPointPaging_OrderByType_names[] = {
    "INDICATOR_ID"
    "METRIC_POINT_ID"
    "ORDER_BY_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry DeviceIndicatorMetricPointPaging_OrderByType_entries[] =
    {
        {{&DeviceIndicatorMetricPointPaging_OrderByType_names[0], 12}, 1},
        {{&DeviceIndicatorMetricPointPaging_OrderByType_names[12], 15}, 2},
        {{&DeviceIndicatorMetricPointPaging_OrderByType_names[27], 21}, 0},
};

static const int DeviceIndicatorMetricPointPaging_OrderByType_entries_by_number[] = {
    2,  // 0 -> ORDER_BY_TYPE_UNKNOWN
    0,  // 1 -> INDICATOR_ID
    1,  // 2 -> METRIC_POINT_ID
};

const std::string& DeviceIndicatorMetricPointPaging_OrderByType_Name(DeviceIndicatorMetricPointPaging_OrderByType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          DeviceIndicatorMetricPointPaging_OrderByType_entries, DeviceIndicatorMetricPointPaging_OrderByType_entries_by_number,
          3, DeviceIndicatorMetricPointPaging_OrderByType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      DeviceIndicatorMetricPointPaging_OrderByType_entries, DeviceIndicatorMetricPointPaging_OrderByType_entries_by_number, 3,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : DeviceIndicatorMetricPointPaging_OrderByType_strings[idx].get();
}

bool DeviceIndicatorMetricPointPaging_OrderByType_Parse(absl::string_view name, DeviceIndicatorMetricPointPaging_OrderByType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      DeviceIndicatorMetricPointPaging_OrderByType_entries, 3, name, &int_value);
  if (success) {
    *value = static_cast<DeviceIndicatorMetricPointPaging_OrderByType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr DeviceIndicatorMetricPointPaging_OrderByType DeviceIndicatorMetricPointPaging::ORDER_BY_TYPE_UNKNOWN;
constexpr DeviceIndicatorMetricPointPaging_OrderByType DeviceIndicatorMetricPointPaging::INDICATOR_ID;
constexpr DeviceIndicatorMetricPointPaging_OrderByType DeviceIndicatorMetricPointPaging::METRIC_POINT_ID;
constexpr DeviceIndicatorMetricPointPaging_OrderByType DeviceIndicatorMetricPointPaging::OrderByType_MIN;
constexpr DeviceIndicatorMetricPointPaging_OrderByType DeviceIndicatorMetricPointPaging::OrderByType_MAX;
constexpr int DeviceIndicatorMetricPointPaging::OrderByType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
bool DeviceIndicatorMetricPointPaging_DirectionType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}
static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string>
    DeviceIndicatorMetricPointPaging_DirectionType_strings[3] = {};

static const char DeviceIndicatorMetricPointPaging_DirectionType_names[] = {
    "ASC"
    "DESC"
    "DIRECTION_TYPE_UNKNOWN"
};

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry DeviceIndicatorMetricPointPaging_DirectionType_entries[] =
    {
        {{&DeviceIndicatorMetricPointPaging_DirectionType_names[0], 3}, 2},
        {{&DeviceIndicatorMetricPointPaging_DirectionType_names[3], 4}, 1},
        {{&DeviceIndicatorMetricPointPaging_DirectionType_names[7], 22}, 0},
};

static const int DeviceIndicatorMetricPointPaging_DirectionType_entries_by_number[] = {
    2,  // 0 -> DIRECTION_TYPE_UNKNOWN
    1,  // 1 -> DESC
    0,  // 2 -> ASC
};

const std::string& DeviceIndicatorMetricPointPaging_DirectionType_Name(DeviceIndicatorMetricPointPaging_DirectionType value) {
  static const bool kDummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          DeviceIndicatorMetricPointPaging_DirectionType_entries, DeviceIndicatorMetricPointPaging_DirectionType_entries_by_number,
          3, DeviceIndicatorMetricPointPaging_DirectionType_strings);
  (void)kDummy;

  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      DeviceIndicatorMetricPointPaging_DirectionType_entries, DeviceIndicatorMetricPointPaging_DirectionType_entries_by_number, 3,
      value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString()
                   : DeviceIndicatorMetricPointPaging_DirectionType_strings[idx].get();
}

bool DeviceIndicatorMetricPointPaging_DirectionType_Parse(absl::string_view name, DeviceIndicatorMetricPointPaging_DirectionType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      DeviceIndicatorMetricPointPaging_DirectionType_entries, 3, name, &int_value);
  if (success) {
    *value = static_cast<DeviceIndicatorMetricPointPaging_DirectionType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && \
  (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

constexpr DeviceIndicatorMetricPointPaging_DirectionType DeviceIndicatorMetricPointPaging::DIRECTION_TYPE_UNKNOWN;
constexpr DeviceIndicatorMetricPointPaging_DirectionType DeviceIndicatorMetricPointPaging::DESC;
constexpr DeviceIndicatorMetricPointPaging_DirectionType DeviceIndicatorMetricPointPaging::ASC;
constexpr DeviceIndicatorMetricPointPaging_DirectionType DeviceIndicatorMetricPointPaging::DirectionType_MIN;
constexpr DeviceIndicatorMetricPointPaging_DirectionType DeviceIndicatorMetricPointPaging::DirectionType_MAX;
constexpr int DeviceIndicatorMetricPointPaging::DirectionType_ARRAYSIZE;

#endif  // (__cplusplus < 201703) &&
        // (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
// ===================================================================

class DeleteDeviceRequest::_Internal {
 public:
};

DeleteDeviceRequest::DeleteDeviceRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeleteDeviceRequest)
}
DeleteDeviceRequest::DeleteDeviceRequest(const DeleteDeviceRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeleteDeviceRequest)
}

inline void DeleteDeviceRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.id_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DeleteDeviceRequest::~DeleteDeviceRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeleteDeviceRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeleteDeviceRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void DeleteDeviceRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeleteDeviceRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeleteDeviceRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.id_ = 0;
  _internal_metadata_.Clear<std::string>();
}

const char* DeleteDeviceRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _impl_.id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeleteDeviceRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeleteDeviceRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_id(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeleteDeviceRequest)
  return target;
}

::size_t DeleteDeviceRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeleteDeviceRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeleteDeviceRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeleteDeviceRequest*>(
      &from));
}

void DeleteDeviceRequest::MergeFrom(const DeleteDeviceRequest& from) {
  DeleteDeviceRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeleteDeviceRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_id() != 0) {
    _this->_internal_set_id(from._internal_id());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeleteDeviceRequest::CopyFrom(const DeleteDeviceRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeleteDeviceRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeleteDeviceRequest::IsInitialized() const {
  return true;
}

void DeleteDeviceRequest::InternalSwap(DeleteDeviceRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);

  swap(_impl_.id_, other->_impl_.id_);
}

std::string DeleteDeviceRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeleteDeviceRequest";
}

// ===================================================================

class DeleteDeviceResponse::_Internal {
 public:
};

DeleteDeviceResponse::DeleteDeviceResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeleteDeviceResponse)
}
DeleteDeviceResponse::DeleteDeviceResponse(const DeleteDeviceResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeleteDeviceResponse)
}

inline void DeleteDeviceResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

DeleteDeviceResponse::~DeleteDeviceResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeleteDeviceResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeleteDeviceResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void DeleteDeviceResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeleteDeviceResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeleteDeviceResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* DeleteDeviceResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeleteDeviceResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeleteDeviceResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeleteDeviceResponse)
  return target;
}

::size_t DeleteDeviceResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeleteDeviceResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeleteDeviceResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeleteDeviceResponse*>(
      &from));
}

void DeleteDeviceResponse::MergeFrom(const DeleteDeviceResponse& from) {
  DeleteDeviceResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeleteDeviceResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeleteDeviceResponse::CopyFrom(const DeleteDeviceResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeleteDeviceResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeleteDeviceResponse::IsInitialized() const {
  return true;
}

void DeleteDeviceResponse::InternalSwap(DeleteDeviceResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string DeleteDeviceResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeleteDeviceResponse";
}

// ===================================================================

class PutDeviceGroupAttachRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<PutDeviceGroupAttachRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(PutDeviceGroupAttachRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::DeviceGroup& device_group(const PutDeviceGroupAttachRequest* msg);
  static void set_has_device_group(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::DeviceGroup&
PutDeviceGroupAttachRequest::_Internal::device_group(const PutDeviceGroupAttachRequest* msg) {
  return *msg->_impl_.device_group_;
}
PutDeviceGroupAttachRequest::PutDeviceGroupAttachRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest)
}
PutDeviceGroupAttachRequest::PutDeviceGroupAttachRequest(const PutDeviceGroupAttachRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PutDeviceGroupAttachRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_group_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.device_group_ = new ::keyapis::telemetry_control::v1::DeviceGroup(*from._impl_.device_group_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest)
}

inline void PutDeviceGroupAttachRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_group_){nullptr}
  };
}

PutDeviceGroupAttachRequest::~PutDeviceGroupAttachRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PutDeviceGroupAttachRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.device_group_;
}

void PutDeviceGroupAttachRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PutDeviceGroupAttachRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.device_group_ != nullptr);
    _impl_.device_group_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* PutDeviceGroupAttachRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceGroup device_group = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_group(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PutDeviceGroupAttachRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceGroup device_group = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::device_group(this),
        _Internal::device_group(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest)
  return target;
}

::size_t PutDeviceGroupAttachRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceGroup device_group = 1 [(.google.api.field_behavior) = REQUIRED];
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.device_group_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PutDeviceGroupAttachRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PutDeviceGroupAttachRequest*>(
      &from));
}

void PutDeviceGroupAttachRequest::MergeFrom(const PutDeviceGroupAttachRequest& from) {
  PutDeviceGroupAttachRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_device_group()->::keyapis::telemetry_control::v1::DeviceGroup::MergeFrom(
        from._internal_device_group());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PutDeviceGroupAttachRequest::CopyFrom(const PutDeviceGroupAttachRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PutDeviceGroupAttachRequest::IsInitialized() const {
  return true;
}

void PutDeviceGroupAttachRequest::InternalSwap(PutDeviceGroupAttachRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.device_group_, other->_impl_.device_group_);
}

std::string PutDeviceGroupAttachRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest";
}

// ===================================================================

class PutDeviceGroupAttachResponse::_Internal {
 public:
};

PutDeviceGroupAttachResponse::PutDeviceGroupAttachResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse)
}
PutDeviceGroupAttachResponse::PutDeviceGroupAttachResponse(const PutDeviceGroupAttachResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse)
}

inline void PutDeviceGroupAttachResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PutDeviceGroupAttachResponse::~PutDeviceGroupAttachResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PutDeviceGroupAttachResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PutDeviceGroupAttachResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PutDeviceGroupAttachResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PutDeviceGroupAttachResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PutDeviceGroupAttachResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse)
  return target;
}

::size_t PutDeviceGroupAttachResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PutDeviceGroupAttachResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PutDeviceGroupAttachResponse*>(
      &from));
}

void PutDeviceGroupAttachResponse::MergeFrom(const PutDeviceGroupAttachResponse& from) {
  PutDeviceGroupAttachResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PutDeviceGroupAttachResponse::CopyFrom(const PutDeviceGroupAttachResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PutDeviceGroupAttachResponse::IsInitialized() const {
  return true;
}

void PutDeviceGroupAttachResponse::InternalSwap(PutDeviceGroupAttachResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PutDeviceGroupAttachResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse";
}

// ===================================================================

class GetDeviceGroupListRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<GetDeviceGroupListRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(GetDeviceGroupListRequest, _impl_._has_bits_);
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceGroupListRequest, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::DeviceGroupFilter& filter(const GetDeviceGroupListRequest* msg);
  static void set_has_filter(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::keyapis::telemetry_control::v1::DeviceGroupPaging& paging(const GetDeviceGroupListRequest* msg);
};

const ::keyapis::telemetry_control::v1::DeviceGroupFilter&
GetDeviceGroupListRequest::_Internal::filter(const GetDeviceGroupListRequest* msg) {
  return *msg->_impl_.filter_;
}
const ::keyapis::telemetry_control::v1::DeviceGroupPaging&
GetDeviceGroupListRequest::_Internal::paging(const GetDeviceGroupListRequest* msg) {
  return *msg->_impl_.pagination_.paging_;
}
void GetDeviceGroupListRequest::set_allocated_paging(::keyapis::telemetry_control::v1::DeviceGroupPaging* paging) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_pagination();
  if (paging) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(paging);
    if (message_arena != submessage_arena) {
      paging = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, paging, submessage_arena);
    }
    set_has_paging();
    _impl_.pagination_.paging_ = paging;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceGroupListRequest.paging)
}
GetDeviceGroupListRequest::GetDeviceGroupListRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
}
GetDeviceGroupListRequest::GetDeviceGroupListRequest(const GetDeviceGroupListRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceGroupListRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
    , decltype(_impl_.pagination_){}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.filter_ = new ::keyapis::telemetry_control::v1::DeviceGroupFilter(*from._impl_.filter_);
  }
  clear_has_pagination();
  switch (from.pagination_case()) {
    case kPaging: {
      _this->_internal_mutable_paging()->::keyapis::telemetry_control::v1::DeviceGroupPaging::MergeFrom(
          from._internal_paging());
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
}

inline void GetDeviceGroupListRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
    , decltype(_impl_.pagination_){}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_pagination();
}

GetDeviceGroupListRequest::~GetDeviceGroupListRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceGroupListRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.filter_;
  if (has_pagination()) {
    clear_pagination();
  }
}

void GetDeviceGroupListRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceGroupListRequest::clear_pagination() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
  switch (pagination_case()) {
    case kPaging: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.pagination_.paging_;
      }
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = PAGINATION_NOT_SET;
}


void GetDeviceGroupListRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.filter_ != nullptr);
    _impl_.filter_->Clear();
  }
  clear_pagination();
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceGroupListRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceGroupFilter filter = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_filter(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.DeviceGroupPaging paging = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_paging(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceGroupListRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceGroupFilter filter = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::filter(this),
        _Internal::filter(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.DeviceGroupPaging paging = 2;
  if (pagination_case() == kPaging) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::paging(this),
        _Internal::paging(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
  return target;
}

::size_t GetDeviceGroupListRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceGroupFilter filter = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.filter_);
  }

  switch (pagination_case()) {
    // .keyapis.telemetry_control.v1.DeviceGroupPaging paging = 2;
    case kPaging: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.pagination_.paging_);
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceGroupListRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceGroupListRequest*>(
      &from));
}

void GetDeviceGroupListRequest::MergeFrom(const GetDeviceGroupListRequest& from) {
  GetDeviceGroupListRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_filter()->::keyapis::telemetry_control::v1::DeviceGroupFilter::MergeFrom(
        from._internal_filter());
  }
  switch (from.pagination_case()) {
    case kPaging: {
      _this->_internal_mutable_paging()->::keyapis::telemetry_control::v1::DeviceGroupPaging::MergeFrom(
          from._internal_paging());
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceGroupListRequest::CopyFrom(const GetDeviceGroupListRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceGroupListRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceGroupListRequest::IsInitialized() const {
  return true;
}

void GetDeviceGroupListRequest::InternalSwap(GetDeviceGroupListRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.filter_, other->_impl_.filter_);
  swap(_impl_.pagination_, other->_impl_.pagination_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceGroupListRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceGroupListRequest";
}

// ===================================================================

class DeviceGroupPaging::_Internal {
 public:
};

DeviceGroupPaging::DeviceGroupPaging(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeviceGroupPaging)
}
DeviceGroupPaging::DeviceGroupPaging(const DeviceGroupPaging& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeviceGroupPaging)
}

inline void DeviceGroupPaging::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.order_by_type_) { 0 }

    , decltype(_impl_.direction_type_) { 0 }

    , decltype(_impl_.limit_) { 0 }

    , decltype(_impl_.offset_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DeviceGroupPaging::~DeviceGroupPaging() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeviceGroupPaging)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeviceGroupPaging::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void DeviceGroupPaging::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeviceGroupPaging::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeviceGroupPaging)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.order_by_type_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.offset_) -
      reinterpret_cast<char*>(&_impl_.order_by_type_)) + sizeof(_impl_.offset_));
  _internal_metadata_.Clear<std::string>();
}

const char* DeviceGroupPaging::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceGroupPaging.OrderByType order_by_type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_order_by_type(static_cast<::keyapis::telemetry_control::v1::DeviceGroupPaging_OrderByType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.DeviceGroupPaging.DirectionType direction_type = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_direction_type(static_cast<::keyapis::telemetry_control::v1::DeviceGroupPaging_DirectionType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 limit = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 24)) {
          _impl_.limit_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 offset = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 32)) {
          _impl_.offset_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeviceGroupPaging::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeviceGroupPaging)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceGroupPaging.OrderByType order_by_type = 1;
  if (this->_internal_order_by_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this->_internal_order_by_type(), target);
  }

  // .keyapis.telemetry_control.v1.DeviceGroupPaging.DirectionType direction_type = 2;
  if (this->_internal_direction_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this->_internal_direction_type(), target);
  }

  // int32 limit = 3;
  if (this->_internal_limit() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        3, this->_internal_limit(), target);
  }

  // int32 offset = 4;
  if (this->_internal_offset() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        4, this->_internal_offset(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeviceGroupPaging)
  return target;
}

::size_t DeviceGroupPaging::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeviceGroupPaging)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceGroupPaging.OrderByType order_by_type = 1;
  if (this->_internal_order_by_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_order_by_type());
  }

  // .keyapis.telemetry_control.v1.DeviceGroupPaging.DirectionType direction_type = 2;
  if (this->_internal_direction_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_direction_type());
  }

  // int32 limit = 3;
  if (this->_internal_limit() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_limit());
  }

  // int32 offset = 4;
  if (this->_internal_offset() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_offset());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeviceGroupPaging::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeviceGroupPaging*>(
      &from));
}

void DeviceGroupPaging::MergeFrom(const DeviceGroupPaging& from) {
  DeviceGroupPaging* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeviceGroupPaging)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_order_by_type() != 0) {
    _this->_internal_set_order_by_type(from._internal_order_by_type());
  }
  if (from._internal_direction_type() != 0) {
    _this->_internal_set_direction_type(from._internal_direction_type());
  }
  if (from._internal_limit() != 0) {
    _this->_internal_set_limit(from._internal_limit());
  }
  if (from._internal_offset() != 0) {
    _this->_internal_set_offset(from._internal_offset());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeviceGroupPaging::CopyFrom(const DeviceGroupPaging& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeviceGroupPaging)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceGroupPaging::IsInitialized() const {
  return true;
}

void DeviceGroupPaging::InternalSwap(DeviceGroupPaging* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DeviceGroupPaging, _impl_.offset_)
      + sizeof(DeviceGroupPaging::_impl_.offset_)
      - PROTOBUF_FIELD_OFFSET(DeviceGroupPaging, _impl_.order_by_type_)>(
          reinterpret_cast<char*>(&_impl_.order_by_type_),
          reinterpret_cast<char*>(&other->_impl_.order_by_type_));
}

std::string DeviceGroupPaging::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeviceGroupPaging";
}

// ===================================================================

class GetDeviceGroupListResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceGroupListResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::DeviceGroup& data(const GetDeviceGroupListResponse* msg);
};

const ::keyapis::telemetry_control::v1::DeviceGroup&
GetDeviceGroupListResponse::_Internal::data(const GetDeviceGroupListResponse* msg) {
  return *msg->_impl_.type_.data_;
}
void GetDeviceGroupListResponse::set_allocated_data(::keyapis::telemetry_control::v1::DeviceGroup* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceGroupListResponse.data)
}
GetDeviceGroupListResponse::GetDeviceGroupListResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
}
GetDeviceGroupListResponse::GetDeviceGroupListResponse(const GetDeviceGroupListResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceGroupListResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::DeviceGroup::MergeFrom(
          from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
}

inline void GetDeviceGroupListResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceGroupListResponse::~GetDeviceGroupListResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceGroupListResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceGroupListResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceGroupListResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceGroupListResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceGroupListResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceGroup data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceGroupListResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceGroup data = 1;
  if (type_case() == kData) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::data(this),
        _Internal::data(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
  return target;
}

::size_t GetDeviceGroupListResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.DeviceGroup data = 1;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceGroupListResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceGroupListResponse*>(
      &from));
}

void GetDeviceGroupListResponse::MergeFrom(const GetDeviceGroupListResponse& from) {
  GetDeviceGroupListResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::DeviceGroup::MergeFrom(
          from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceGroupListResponse::CopyFrom(const GetDeviceGroupListResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceGroupListResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceGroupListResponse::IsInitialized() const {
  return true;
}

void GetDeviceGroupListResponse::InternalSwap(GetDeviceGroupListResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceGroupListResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceGroupListResponse";
}

// ===================================================================

class GetDeviceGroupCountRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<GetDeviceGroupCountRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(GetDeviceGroupCountRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::DeviceGroupFilter& filter(const GetDeviceGroupCountRequest* msg);
  static void set_has_filter(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::DeviceGroupFilter&
GetDeviceGroupCountRequest::_Internal::filter(const GetDeviceGroupCountRequest* msg) {
  return *msg->_impl_.filter_;
}
GetDeviceGroupCountRequest::GetDeviceGroupCountRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceGroupCountRequest)
}
GetDeviceGroupCountRequest::GetDeviceGroupCountRequest(const GetDeviceGroupCountRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceGroupCountRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.filter_ = new ::keyapis::telemetry_control::v1::DeviceGroupFilter(*from._impl_.filter_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceGroupCountRequest)
}

inline void GetDeviceGroupCountRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
  };
}

GetDeviceGroupCountRequest::~GetDeviceGroupCountRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceGroupCountRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceGroupCountRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.filter_;
}

void GetDeviceGroupCountRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceGroupCountRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceGroupCountRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.filter_ != nullptr);
    _impl_.filter_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceGroupCountRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceGroupFilter filter = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_filter(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceGroupCountRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceGroupCountRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceGroupFilter filter = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::filter(this),
        _Internal::filter(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceGroupCountRequest)
  return target;
}

::size_t GetDeviceGroupCountRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceGroupCountRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceGroupFilter filter = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.filter_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceGroupCountRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceGroupCountRequest*>(
      &from));
}

void GetDeviceGroupCountRequest::MergeFrom(const GetDeviceGroupCountRequest& from) {
  GetDeviceGroupCountRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceGroupCountRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_filter()->::keyapis::telemetry_control::v1::DeviceGroupFilter::MergeFrom(
        from._internal_filter());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceGroupCountRequest::CopyFrom(const GetDeviceGroupCountRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceGroupCountRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceGroupCountRequest::IsInitialized() const {
  return true;
}

void GetDeviceGroupCountRequest::InternalSwap(GetDeviceGroupCountRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.filter_, other->_impl_.filter_);
}

std::string GetDeviceGroupCountRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceGroupCountRequest";
}

// ===================================================================

class DeviceGroupFilter::_Internal {
 public:
};

DeviceGroupFilter::DeviceGroupFilter(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeviceGroupFilter)
}
DeviceGroupFilter::DeviceGroupFilter(const DeviceGroupFilter& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  DeviceGroupFilter* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.group_ids_){from._impl_.group_ids_}
    , decltype(_impl_.device_ids_) { from._impl_.device_ids_ }
    ,/* _impl_._device_ids_cached_byte_size_ = */ { 0 }

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeviceGroupFilter)
}

inline void DeviceGroupFilter::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.group_ids_){arena}
    , decltype(_impl_.device_ids_) { arena }
    ,/* _impl_._device_ids_cached_byte_size_ = */ { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DeviceGroupFilter::~DeviceGroupFilter() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeviceGroupFilter)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeviceGroupFilter::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _internal_mutable_group_ids()->~RepeatedPtrField();
  _impl_.device_ids_.~RepeatedField();
}

void DeviceGroupFilter::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeviceGroupFilter::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeviceGroupFilter)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_mutable_group_ids()->Clear();
  _internal_mutable_device_ids()->Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* DeviceGroupFilter::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated string group_ids = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_group_ids();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated int32 device_ids = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_device_ids(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 16) {
          _internal_add_device_ids(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeviceGroupFilter::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeviceGroupFilter)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string group_ids = 1;
  for (int i = 0, n = this->_internal_group_ids_size(); i < n; ++i) {
    const auto& s = this->_internal_group_ids(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceGroupFilter.group_ids");
    target = stream->WriteString(1, s, target);
  }

  // repeated int32 device_ids = 2;
  {
    int byte_size = _impl_._device_ids_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(2, _internal_device_ids(),
                                                 byte_size, target);
    }
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeviceGroupFilter)
  return target;
}

::size_t DeviceGroupFilter::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeviceGroupFilter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string group_ids = 1;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_group_ids().size());
  for (int i = 0, n = _internal_group_ids().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_group_ids().Get(i));
  }

  // repeated int32 device_ids = 2;
  {
    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
        this->_internal_device_ids())
    ;
    _impl_._device_ids_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeviceGroupFilter::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeviceGroupFilter*>(
      &from));
}

void DeviceGroupFilter::MergeFrom(const DeviceGroupFilter& from) {
  DeviceGroupFilter* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeviceGroupFilter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_mutable_group_ids()->MergeFrom(from._internal_group_ids());
  _this->_impl_.device_ids_.MergeFrom(from._impl_.device_ids_);
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeviceGroupFilter::CopyFrom(const DeviceGroupFilter& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeviceGroupFilter)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceGroupFilter::IsInitialized() const {
  return true;
}

void DeviceGroupFilter::InternalSwap(DeviceGroupFilter* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _internal_mutable_group_ids()->InternalSwap(
      other->_internal_mutable_group_ids());
  _impl_.device_ids_.InternalSwap(&other->_impl_.device_ids_);
}

std::string DeviceGroupFilter::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeviceGroupFilter";
}

// ===================================================================

class GetDeviceGroupCountResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse, _impl_._oneof_case_);
};

GetDeviceGroupCountResponse::GetDeviceGroupCountResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
}
GetDeviceGroupCountResponse::GetDeviceGroupCountResponse(const GetDeviceGroupCountResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceGroupCountResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_set_data(from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
}

inline void GetDeviceGroupCountResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceGroupCountResponse::~GetDeviceGroupCountResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceGroupCountResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceGroupCountResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceGroupCountResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
  switch (type_case()) {
    case kData: {
      // No need to clear
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceGroupCountResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceGroupCountResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _internal_set_data(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceGroupCountResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 data = 1;
  if (type_case() == kData) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_data(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
  return target;
}

::size_t GetDeviceGroupCountResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // int32 data = 1;
    case kData: {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this->_internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceGroupCountResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceGroupCountResponse*>(
      &from));
}

void GetDeviceGroupCountResponse::MergeFrom(const GetDeviceGroupCountResponse& from) {
  GetDeviceGroupCountResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_set_data(from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceGroupCountResponse::CopyFrom(const GetDeviceGroupCountResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceGroupCountResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceGroupCountResponse::IsInitialized() const {
  return true;
}

void GetDeviceGroupCountResponse::InternalSwap(GetDeviceGroupCountResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceGroupCountResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceGroupCountResponse";
}

// ===================================================================

class PutDeviceGroupDetachRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<PutDeviceGroupDetachRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(PutDeviceGroupDetachRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::DeviceGroup& device_group(const PutDeviceGroupDetachRequest* msg);
  static void set_has_device_group(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::DeviceGroup&
PutDeviceGroupDetachRequest::_Internal::device_group(const PutDeviceGroupDetachRequest* msg) {
  return *msg->_impl_.device_group_;
}
PutDeviceGroupDetachRequest::PutDeviceGroupDetachRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest)
}
PutDeviceGroupDetachRequest::PutDeviceGroupDetachRequest(const PutDeviceGroupDetachRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PutDeviceGroupDetachRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_group_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.device_group_ = new ::keyapis::telemetry_control::v1::DeviceGroup(*from._impl_.device_group_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest)
}

inline void PutDeviceGroupDetachRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_group_){nullptr}
  };
}

PutDeviceGroupDetachRequest::~PutDeviceGroupDetachRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PutDeviceGroupDetachRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.device_group_;
}

void PutDeviceGroupDetachRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PutDeviceGroupDetachRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.device_group_ != nullptr);
    _impl_.device_group_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* PutDeviceGroupDetachRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceGroup device_group = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_group(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PutDeviceGroupDetachRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceGroup device_group = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::device_group(this),
        _Internal::device_group(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest)
  return target;
}

::size_t PutDeviceGroupDetachRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceGroup device_group = 1 [(.google.api.field_behavior) = REQUIRED];
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.device_group_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PutDeviceGroupDetachRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PutDeviceGroupDetachRequest*>(
      &from));
}

void PutDeviceGroupDetachRequest::MergeFrom(const PutDeviceGroupDetachRequest& from) {
  PutDeviceGroupDetachRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_device_group()->::keyapis::telemetry_control::v1::DeviceGroup::MergeFrom(
        from._internal_device_group());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PutDeviceGroupDetachRequest::CopyFrom(const PutDeviceGroupDetachRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PutDeviceGroupDetachRequest::IsInitialized() const {
  return true;
}

void PutDeviceGroupDetachRequest::InternalSwap(PutDeviceGroupDetachRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.device_group_, other->_impl_.device_group_);
}

std::string PutDeviceGroupDetachRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest";
}

// ===================================================================

class PutDeviceGroupDetachResponse::_Internal {
 public:
};

PutDeviceGroupDetachResponse::PutDeviceGroupDetachResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse)
}
PutDeviceGroupDetachResponse::PutDeviceGroupDetachResponse(const PutDeviceGroupDetachResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse)
}

inline void PutDeviceGroupDetachResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PutDeviceGroupDetachResponse::~PutDeviceGroupDetachResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PutDeviceGroupDetachResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PutDeviceGroupDetachResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PutDeviceGroupDetachResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PutDeviceGroupDetachResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PutDeviceGroupDetachResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse)
  return target;
}

::size_t PutDeviceGroupDetachResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PutDeviceGroupDetachResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PutDeviceGroupDetachResponse*>(
      &from));
}

void PutDeviceGroupDetachResponse::MergeFrom(const PutDeviceGroupDetachResponse& from) {
  PutDeviceGroupDetachResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PutDeviceGroupDetachResponse::CopyFrom(const PutDeviceGroupDetachResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PutDeviceGroupDetachResponse::IsInitialized() const {
  return true;
}

void PutDeviceGroupDetachResponse::InternalSwap(PutDeviceGroupDetachResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PutDeviceGroupDetachResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse";
}

// ===================================================================

class DeviceGroup::_Internal {
 public:
};

DeviceGroup::DeviceGroup(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeviceGroup)
}
DeviceGroup::DeviceGroup(const DeviceGroup& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  DeviceGroup* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.group_id_) {}

    , decltype(_impl_.device_id_) {}

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.group_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.group_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_group_id().empty()) {
    _this->_impl_.group_id_.Set(from._internal_group_id(), _this->GetArenaForAllocation());
  }
  _this->_impl_.device_id_ = from._impl_.device_id_;
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeviceGroup)
}

inline void DeviceGroup::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.group_id_) {}

    , decltype(_impl_.device_id_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.group_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.group_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

DeviceGroup::~DeviceGroup() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeviceGroup)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeviceGroup::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.group_id_.Destroy();
}

void DeviceGroup::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeviceGroup::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeviceGroup)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.group_id_.ClearToEmpty();
  _impl_.device_id_ = 0;
  _internal_metadata_.Clear<std::string>();
}

const char* DeviceGroup::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string group_id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_group_id();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          _impl_.device_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeviceGroup::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeviceGroup)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string group_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_group_id().empty()) {
    const std::string& _s = this->_internal_group_id();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceGroup.group_id");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        2, this->_internal_device_id(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeviceGroup)
  return target;
}

::size_t DeviceGroup::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeviceGroup)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string group_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_group_id().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_group_id());
  }

  // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_device_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeviceGroup::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeviceGroup*>(
      &from));
}

void DeviceGroup::MergeFrom(const DeviceGroup& from) {
  DeviceGroup* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeviceGroup)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_group_id().empty()) {
    _this->_internal_set_group_id(from._internal_group_id());
  }
  if (from._internal_device_id() != 0) {
    _this->_internal_set_device_id(from._internal_device_id());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeviceGroup::CopyFrom(const DeviceGroup& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeviceGroup)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceGroup::IsInitialized() const {
  return true;
}

void DeviceGroup::InternalSwap(DeviceGroup* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.group_id_, lhs_arena,
                                       &other->_impl_.group_id_, rhs_arena);

  swap(_impl_.device_id_, other->_impl_.device_id_);
}

std::string DeviceGroup::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeviceGroup";
}

// ===================================================================

class PostDeviceIndicatorRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<PostDeviceIndicatorRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(PostDeviceIndicatorRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::Indicator& data(const PostDeviceIndicatorRequest* msg);
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::Indicator&
PostDeviceIndicatorRequest::_Internal::data(const PostDeviceIndicatorRequest* msg) {
  return *msg->_impl_.data_;
}
PostDeviceIndicatorRequest::PostDeviceIndicatorRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceIndicatorRequest)
}
PostDeviceIndicatorRequest::PostDeviceIndicatorRequest(const PostDeviceIndicatorRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceIndicatorRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.data_ = new ::keyapis::telemetry_control::v1::Indicator(*from._impl_.data_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceIndicatorRequest)
}

inline void PostDeviceIndicatorRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){nullptr}
  };
}

PostDeviceIndicatorRequest::~PostDeviceIndicatorRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceIndicatorRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceIndicatorRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.data_;
}

void PostDeviceIndicatorRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceIndicatorRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceIndicatorRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.data_ != nullptr);
    _impl_.data_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceIndicatorRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Indicator data = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceIndicatorRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceIndicatorRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.Indicator data = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::data(this),
        _Internal::data(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceIndicatorRequest)
  return target;
}

::size_t PostDeviceIndicatorRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceIndicatorRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.Indicator data = 1 [(.google.api.field_behavior) = REQUIRED];
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.data_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceIndicatorRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceIndicatorRequest*>(
      &from));
}

void PostDeviceIndicatorRequest::MergeFrom(const PostDeviceIndicatorRequest& from) {
  PostDeviceIndicatorRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceIndicatorRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Indicator::MergeFrom(
        from._internal_data());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceIndicatorRequest::CopyFrom(const PostDeviceIndicatorRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceIndicatorRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceIndicatorRequest::IsInitialized() const {
  return true;
}

void PostDeviceIndicatorRequest::InternalSwap(PostDeviceIndicatorRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.data_, other->_impl_.data_);
}

std::string PostDeviceIndicatorRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceIndicatorRequest";
}

// ===================================================================

class PostDeviceIndicatorResponse_Error::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse_Error, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Indicator_ValidationError& validation(const PostDeviceIndicatorResponse_Error* msg);
};

const ::keyapis::telemetry_control::v1::Indicator_ValidationError&
PostDeviceIndicatorResponse_Error::_Internal::validation(const PostDeviceIndicatorResponse_Error* msg) {
  return *msg->_impl_.reason_.validation_;
}
void PostDeviceIndicatorResponse_Error::set_allocated_validation(::keyapis::telemetry_control::v1::Indicator_ValidationError* validation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (validation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(validation);
    if (message_arena != submessage_arena) {
      validation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, validation, submessage_arena);
    }
    set_has_validation();
    _impl_.reason_.validation_ = validation;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error.validation)
}
PostDeviceIndicatorResponse_Error::PostDeviceIndicatorResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
}
PostDeviceIndicatorResponse_Error::PostDeviceIndicatorResponse_Error(const PostDeviceIndicatorResponse_Error& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceIndicatorResponse_Error* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kValidation: {
      _this->_internal_mutable_validation()->::keyapis::telemetry_control::v1::Indicator_ValidationError::MergeFrom(
          from._internal_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
}

inline void PostDeviceIndicatorResponse_Error::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

PostDeviceIndicatorResponse_Error::~PostDeviceIndicatorResponse_Error() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceIndicatorResponse_Error::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void PostDeviceIndicatorResponse_Error::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceIndicatorResponse_Error::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
  switch (reason_case()) {
    case kValidation: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.validation_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void PostDeviceIndicatorResponse_Error::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceIndicatorResponse_Error::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Indicator.ValidationError validation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_validation(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceIndicatorResponse_Error::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.Indicator.ValidationError validation = 1;
  if (reason_case() == kValidation) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::validation(this),
        _Internal::validation(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
  return target;
}

::size_t PostDeviceIndicatorResponse_Error::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.Indicator.ValidationError validation = 1;
    case kValidation: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.validation_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceIndicatorResponse_Error::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceIndicatorResponse_Error*>(
      &from));
}

void PostDeviceIndicatorResponse_Error::MergeFrom(const PostDeviceIndicatorResponse_Error& from) {
  PostDeviceIndicatorResponse_Error* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kValidation: {
      _this->_internal_mutable_validation()->::keyapis::telemetry_control::v1::Indicator_ValidationError::MergeFrom(
          from._internal_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceIndicatorResponse_Error::CopyFrom(const PostDeviceIndicatorResponse_Error& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceIndicatorResponse_Error::IsInitialized() const {
  return true;
}

void PostDeviceIndicatorResponse_Error::InternalSwap(PostDeviceIndicatorResponse_Error* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceIndicatorResponse_Error::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error";
}

// ===================================================================

class PostDeviceIndicatorResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Indicator& data(const PostDeviceIndicatorResponse* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse_Error& error(const PostDeviceIndicatorResponse* msg);
};

const ::keyapis::telemetry_control::v1::Indicator&
PostDeviceIndicatorResponse::_Internal::data(const PostDeviceIndicatorResponse* msg) {
  return *msg->_impl_.type_.data_;
}
const ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse_Error&
PostDeviceIndicatorResponse::_Internal::error(const PostDeviceIndicatorResponse* msg) {
  return *msg->_impl_.type_.error_;
}
void PostDeviceIndicatorResponse::set_allocated_data(::keyapis::telemetry_control::v1::Indicator* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.data)
}
void PostDeviceIndicatorResponse::set_allocated_error(::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse_Error* error) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (error) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(error);
    if (message_arena != submessage_arena) {
      error = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, error, submessage_arena);
    }
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.error)
}
PostDeviceIndicatorResponse::PostDeviceIndicatorResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
}
PostDeviceIndicatorResponse::PostDeviceIndicatorResponse(const PostDeviceIndicatorResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceIndicatorResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Indicator::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
}

inline void PostDeviceIndicatorResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

PostDeviceIndicatorResponse::~PostDeviceIndicatorResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceIndicatorResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void PostDeviceIndicatorResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceIndicatorResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case kError: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.error_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void PostDeviceIndicatorResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceIndicatorResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Indicator data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error error = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_error(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceIndicatorResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (type_case()) {
    case kData: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::data(this),
          _Internal::data(this).GetCachedSize(), target, stream);
      break;
    }
    case kError: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::error(this),
          _Internal::error(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
  return target;
}

::size_t PostDeviceIndicatorResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.Indicator data = 1;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error error = 2;
    case kError: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.error_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceIndicatorResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceIndicatorResponse*>(
      &from));
}

void PostDeviceIndicatorResponse::MergeFrom(const PostDeviceIndicatorResponse& from) {
  PostDeviceIndicatorResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Indicator::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceIndicatorResponse::CopyFrom(const PostDeviceIndicatorResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceIndicatorResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceIndicatorResponse::IsInitialized() const {
  return true;
}

void PostDeviceIndicatorResponse::InternalSwap(PostDeviceIndicatorResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceIndicatorResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceIndicatorResponse";
}

// ===================================================================

class GetDeviceIndicatorRequest::_Internal {
 public:
};

GetDeviceIndicatorRequest::GetDeviceIndicatorRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorRequest)
}
GetDeviceIndicatorRequest::GetDeviceIndicatorRequest(const GetDeviceIndicatorRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorRequest)
}

inline void GetDeviceIndicatorRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.id_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

GetDeviceIndicatorRequest::~GetDeviceIndicatorRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void GetDeviceIndicatorRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.id_ = 0;
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _impl_.id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_id(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorRequest)
  return target;
}

::size_t GetDeviceIndicatorRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorRequest*>(
      &from));
}

void GetDeviceIndicatorRequest::MergeFrom(const GetDeviceIndicatorRequest& from) {
  GetDeviceIndicatorRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_id() != 0) {
    _this->_internal_set_id(from._internal_id());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorRequest::CopyFrom(const GetDeviceIndicatorRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorRequest::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorRequest::InternalSwap(GetDeviceIndicatorRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);

  swap(_impl_.id_, other->_impl_.id_);
}

std::string GetDeviceIndicatorRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorRequest";
}

// ===================================================================

class GetDeviceIndicatorResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Indicator& data(const GetDeviceIndicatorResponse* msg);
};

const ::keyapis::telemetry_control::v1::Indicator&
GetDeviceIndicatorResponse::_Internal::data(const GetDeviceIndicatorResponse* msg) {
  return *msg->_impl_.type_.data_;
}
void GetDeviceIndicatorResponse::set_allocated_data(::keyapis::telemetry_control::v1::Indicator* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse.data)
}
GetDeviceIndicatorResponse::GetDeviceIndicatorResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
}
GetDeviceIndicatorResponse::GetDeviceIndicatorResponse(const GetDeviceIndicatorResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Indicator::MergeFrom(
          from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
}

inline void GetDeviceIndicatorResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceIndicatorResponse::~GetDeviceIndicatorResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceIndicatorResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceIndicatorResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Indicator data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.Indicator data = 1;
  if (type_case() == kData) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::data(this),
        _Internal::data(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
  return target;
}

::size_t GetDeviceIndicatorResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.Indicator data = 1;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorResponse*>(
      &from));
}

void GetDeviceIndicatorResponse::MergeFrom(const GetDeviceIndicatorResponse& from) {
  GetDeviceIndicatorResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Indicator::MergeFrom(
          from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorResponse::CopyFrom(const GetDeviceIndicatorResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorResponse::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorResponse::InternalSwap(GetDeviceIndicatorResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceIndicatorResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorResponse";
}

// ===================================================================

class GetDeviceRequest::_Internal {
 public:
};

GetDeviceRequest::GetDeviceRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceRequest)
}
GetDeviceRequest::GetDeviceRequest(const GetDeviceRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceRequest)
}

inline void GetDeviceRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.id_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

GetDeviceRequest::~GetDeviceRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void GetDeviceRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.id_ = 0;
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _impl_.id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_id(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceRequest)
  return target;
}

::size_t GetDeviceRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceRequest*>(
      &from));
}

void GetDeviceRequest::MergeFrom(const GetDeviceRequest& from) {
  GetDeviceRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_id() != 0) {
    _this->_internal_set_id(from._internal_id());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceRequest::CopyFrom(const GetDeviceRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceRequest::IsInitialized() const {
  return true;
}

void GetDeviceRequest::InternalSwap(GetDeviceRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);

  swap(_impl_.id_, other->_impl_.id_);
}

std::string GetDeviceRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceRequest";
}

// ===================================================================

class GetDeviceResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Device& data(const GetDeviceResponse* msg);
};

const ::keyapis::telemetry_control::v1::Device&
GetDeviceResponse::_Internal::data(const GetDeviceResponse* msg) {
  return *msg->_impl_.type_.data_;
}
void GetDeviceResponse::set_allocated_data(::keyapis::telemetry_control::v1::Device* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceResponse.data)
}
GetDeviceResponse::GetDeviceResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceResponse)
}
GetDeviceResponse::GetDeviceResponse(const GetDeviceResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Device::MergeFrom(
          from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceResponse)
}

inline void GetDeviceResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceResponse::~GetDeviceResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceResponse)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Device data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.Device data = 1;
  if (type_case() == kData) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::data(this),
        _Internal::data(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceResponse)
  return target;
}

::size_t GetDeviceResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.Device data = 1;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceResponse*>(
      &from));
}

void GetDeviceResponse::MergeFrom(const GetDeviceResponse& from) {
  GetDeviceResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Device::MergeFrom(
          from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceResponse::CopyFrom(const GetDeviceResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceResponse::IsInitialized() const {
  return true;
}

void GetDeviceResponse::InternalSwap(GetDeviceResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceResponse";
}

// ===================================================================

class GetDeviceIndicatorListRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<GetDeviceIndicatorListRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(GetDeviceIndicatorListRequest, _impl_._has_bits_);
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::IndicatorFilter& filter(const GetDeviceIndicatorListRequest* msg);
  static void set_has_filter(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::keyapis::telemetry_control::v1::IndicatorPaging& paging(const GetDeviceIndicatorListRequest* msg);
};

const ::keyapis::telemetry_control::v1::IndicatorFilter&
GetDeviceIndicatorListRequest::_Internal::filter(const GetDeviceIndicatorListRequest* msg) {
  return *msg->_impl_.filter_;
}
const ::keyapis::telemetry_control::v1::IndicatorPaging&
GetDeviceIndicatorListRequest::_Internal::paging(const GetDeviceIndicatorListRequest* msg) {
  return *msg->_impl_.pagination_.paging_;
}
void GetDeviceIndicatorListRequest::set_allocated_paging(::keyapis::telemetry_control::v1::IndicatorPaging* paging) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_pagination();
  if (paging) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(paging);
    if (message_arena != submessage_arena) {
      paging = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, paging, submessage_arena);
    }
    set_has_paging();
    _impl_.pagination_.paging_ = paging;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest.paging)
}
GetDeviceIndicatorListRequest::GetDeviceIndicatorListRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
}
GetDeviceIndicatorListRequest::GetDeviceIndicatorListRequest(const GetDeviceIndicatorListRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorListRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
    , decltype(_impl_.pagination_){}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.filter_ = new ::keyapis::telemetry_control::v1::IndicatorFilter(*from._impl_.filter_);
  }
  clear_has_pagination();
  switch (from.pagination_case()) {
    case kPaging: {
      _this->_internal_mutable_paging()->::keyapis::telemetry_control::v1::IndicatorPaging::MergeFrom(
          from._internal_paging());
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
}

inline void GetDeviceIndicatorListRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
    , decltype(_impl_.pagination_){}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_pagination();
}

GetDeviceIndicatorListRequest::~GetDeviceIndicatorListRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorListRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.filter_;
  if (has_pagination()) {
    clear_pagination();
  }
}

void GetDeviceIndicatorListRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorListRequest::clear_pagination() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
  switch (pagination_case()) {
    case kPaging: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.pagination_.paging_;
      }
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = PAGINATION_NOT_SET;
}


void GetDeviceIndicatorListRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.filter_ != nullptr);
    _impl_.filter_->Clear();
  }
  clear_pagination();
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorListRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.IndicatorFilter filter = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_filter(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.IndicatorPaging paging = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_paging(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorListRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.IndicatorFilter filter = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::filter(this),
        _Internal::filter(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.IndicatorPaging paging = 2;
  if (pagination_case() == kPaging) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::paging(this),
        _Internal::paging(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
  return target;
}

::size_t GetDeviceIndicatorListRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.IndicatorFilter filter = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.filter_);
  }

  switch (pagination_case()) {
    // .keyapis.telemetry_control.v1.IndicatorPaging paging = 2;
    case kPaging: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.pagination_.paging_);
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorListRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorListRequest*>(
      &from));
}

void GetDeviceIndicatorListRequest::MergeFrom(const GetDeviceIndicatorListRequest& from) {
  GetDeviceIndicatorListRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_filter()->::keyapis::telemetry_control::v1::IndicatorFilter::MergeFrom(
        from._internal_filter());
  }
  switch (from.pagination_case()) {
    case kPaging: {
      _this->_internal_mutable_paging()->::keyapis::telemetry_control::v1::IndicatorPaging::MergeFrom(
          from._internal_paging());
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorListRequest::CopyFrom(const GetDeviceIndicatorListRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorListRequest::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorListRequest::InternalSwap(GetDeviceIndicatorListRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.filter_, other->_impl_.filter_);
  swap(_impl_.pagination_, other->_impl_.pagination_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceIndicatorListRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest";
}

// ===================================================================

class IndicatorPaging_ValidationError_LimitInvalid::_Internal {
 public:
};

IndicatorPaging_ValidationError_LimitInvalid::IndicatorPaging_ValidationError_LimitInvalid(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid)
}
IndicatorPaging_ValidationError_LimitInvalid::IndicatorPaging_ValidationError_LimitInvalid(const IndicatorPaging_ValidationError_LimitInvalid& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid)
}

inline void IndicatorPaging_ValidationError_LimitInvalid::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

IndicatorPaging_ValidationError_LimitInvalid::~IndicatorPaging_ValidationError_LimitInvalid() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void IndicatorPaging_ValidationError_LimitInvalid::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void IndicatorPaging_ValidationError_LimitInvalid::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void IndicatorPaging_ValidationError_LimitInvalid::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* IndicatorPaging_ValidationError_LimitInvalid::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* IndicatorPaging_ValidationError_LimitInvalid::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid)
  return target;
}

::size_t IndicatorPaging_ValidationError_LimitInvalid::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void IndicatorPaging_ValidationError_LimitInvalid::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const IndicatorPaging_ValidationError_LimitInvalid*>(
      &from));
}

void IndicatorPaging_ValidationError_LimitInvalid::MergeFrom(const IndicatorPaging_ValidationError_LimitInvalid& from) {
  IndicatorPaging_ValidationError_LimitInvalid* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void IndicatorPaging_ValidationError_LimitInvalid::CopyFrom(const IndicatorPaging_ValidationError_LimitInvalid& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool IndicatorPaging_ValidationError_LimitInvalid::IsInitialized() const {
  return true;
}

void IndicatorPaging_ValidationError_LimitInvalid::InternalSwap(IndicatorPaging_ValidationError_LimitInvalid* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string IndicatorPaging_ValidationError_LimitInvalid::GetTypeName() const {
  return "keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid";
}

// ===================================================================

class IndicatorPaging_ValidationError_OffsetInvalid::_Internal {
 public:
};

IndicatorPaging_ValidationError_OffsetInvalid::IndicatorPaging_ValidationError_OffsetInvalid(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid)
}
IndicatorPaging_ValidationError_OffsetInvalid::IndicatorPaging_ValidationError_OffsetInvalid(const IndicatorPaging_ValidationError_OffsetInvalid& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid)
}

inline void IndicatorPaging_ValidationError_OffsetInvalid::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

IndicatorPaging_ValidationError_OffsetInvalid::~IndicatorPaging_ValidationError_OffsetInvalid() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void IndicatorPaging_ValidationError_OffsetInvalid::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void IndicatorPaging_ValidationError_OffsetInvalid::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void IndicatorPaging_ValidationError_OffsetInvalid::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* IndicatorPaging_ValidationError_OffsetInvalid::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* IndicatorPaging_ValidationError_OffsetInvalid::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid)
  return target;
}

::size_t IndicatorPaging_ValidationError_OffsetInvalid::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void IndicatorPaging_ValidationError_OffsetInvalid::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const IndicatorPaging_ValidationError_OffsetInvalid*>(
      &from));
}

void IndicatorPaging_ValidationError_OffsetInvalid::MergeFrom(const IndicatorPaging_ValidationError_OffsetInvalid& from) {
  IndicatorPaging_ValidationError_OffsetInvalid* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void IndicatorPaging_ValidationError_OffsetInvalid::CopyFrom(const IndicatorPaging_ValidationError_OffsetInvalid& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool IndicatorPaging_ValidationError_OffsetInvalid::IsInitialized() const {
  return true;
}

void IndicatorPaging_ValidationError_OffsetInvalid::InternalSwap(IndicatorPaging_ValidationError_OffsetInvalid* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string IndicatorPaging_ValidationError_OffsetInvalid::GetTypeName() const {
  return "keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid";
}

// ===================================================================

class IndicatorPaging_ValidationError::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_LimitInvalid& limit(const IndicatorPaging_ValidationError* msg);
  static const ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_OffsetInvalid& offset(const IndicatorPaging_ValidationError* msg);
};

const ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_LimitInvalid&
IndicatorPaging_ValidationError::_Internal::limit(const IndicatorPaging_ValidationError* msg) {
  return *msg->_impl_.reason_.limit_;
}
const ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_OffsetInvalid&
IndicatorPaging_ValidationError::_Internal::offset(const IndicatorPaging_ValidationError* msg) {
  return *msg->_impl_.reason_.offset_;
}
void IndicatorPaging_ValidationError::set_allocated_limit(::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_LimitInvalid* limit) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (limit) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(limit);
    if (message_arena != submessage_arena) {
      limit = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, limit, submessage_arena);
    }
    set_has_limit();
    _impl_.reason_.limit_ = limit;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.limit)
}
void IndicatorPaging_ValidationError::set_allocated_offset(::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_OffsetInvalid* offset) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (offset) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(offset);
    if (message_arena != submessage_arena) {
      offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, offset, submessage_arena);
    }
    set_has_offset();
    _impl_.reason_.offset_ = offset;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.offset)
}
IndicatorPaging_ValidationError::IndicatorPaging_ValidationError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
}
IndicatorPaging_ValidationError::IndicatorPaging_ValidationError(const IndicatorPaging_ValidationError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  IndicatorPaging_ValidationError* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kLimit: {
      _this->_internal_mutable_limit()->::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_LimitInvalid::MergeFrom(
          from._internal_limit());
      break;
    }
    case kOffset: {
      _this->_internal_mutable_offset()->::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_OffsetInvalid::MergeFrom(
          from._internal_offset());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
}

inline void IndicatorPaging_ValidationError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

IndicatorPaging_ValidationError::~IndicatorPaging_ValidationError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void IndicatorPaging_ValidationError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void IndicatorPaging_ValidationError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void IndicatorPaging_ValidationError::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
  switch (reason_case()) {
    case kLimit: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.limit_;
      }
      break;
    }
    case kOffset: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.offset_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void IndicatorPaging_ValidationError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* IndicatorPaging_ValidationError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid limit = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_limit(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid offset = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_offset(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* IndicatorPaging_ValidationError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (reason_case()) {
    case kLimit: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::limit(this),
          _Internal::limit(this).GetCachedSize(), target, stream);
      break;
    }
    case kOffset: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::offset(this),
          _Internal::offset(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
  return target;
}

::size_t IndicatorPaging_ValidationError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid limit = 1;
    case kLimit: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.limit_);
      break;
    }
    // .keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid offset = 2;
    case kOffset: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.offset_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void IndicatorPaging_ValidationError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const IndicatorPaging_ValidationError*>(
      &from));
}

void IndicatorPaging_ValidationError::MergeFrom(const IndicatorPaging_ValidationError& from) {
  IndicatorPaging_ValidationError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kLimit: {
      _this->_internal_mutable_limit()->::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_LimitInvalid::MergeFrom(
          from._internal_limit());
      break;
    }
    case kOffset: {
      _this->_internal_mutable_offset()->::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_OffsetInvalid::MergeFrom(
          from._internal_offset());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void IndicatorPaging_ValidationError::CopyFrom(const IndicatorPaging_ValidationError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.IndicatorPaging.ValidationError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool IndicatorPaging_ValidationError::IsInitialized() const {
  return true;
}

void IndicatorPaging_ValidationError::InternalSwap(IndicatorPaging_ValidationError* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string IndicatorPaging_ValidationError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.IndicatorPaging.ValidationError";
}

// ===================================================================

class IndicatorPaging::_Internal {
 public:
};

IndicatorPaging::IndicatorPaging(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.IndicatorPaging)
}
IndicatorPaging::IndicatorPaging(const IndicatorPaging& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.IndicatorPaging)
}

inline void IndicatorPaging::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.order_by_type_) { 0 }

    , decltype(_impl_.direction_type_) { 0 }

    , decltype(_impl_.limit_) { 0 }

    , decltype(_impl_.offset_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

IndicatorPaging::~IndicatorPaging() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.IndicatorPaging)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void IndicatorPaging::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void IndicatorPaging::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void IndicatorPaging::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.IndicatorPaging)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.order_by_type_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.offset_) -
      reinterpret_cast<char*>(&_impl_.order_by_type_)) + sizeof(_impl_.offset_));
  _internal_metadata_.Clear<std::string>();
}

const char* IndicatorPaging::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.IndicatorPaging.OrderByType order_by_type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_order_by_type(static_cast<::keyapis::telemetry_control::v1::IndicatorPaging_OrderByType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.IndicatorPaging.DirectionType direction_type = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_direction_type(static_cast<::keyapis::telemetry_control::v1::IndicatorPaging_DirectionType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 limit = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 24)) {
          _impl_.limit_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 offset = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 32)) {
          _impl_.offset_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* IndicatorPaging::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.IndicatorPaging)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.IndicatorPaging.OrderByType order_by_type = 1;
  if (this->_internal_order_by_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this->_internal_order_by_type(), target);
  }

  // .keyapis.telemetry_control.v1.IndicatorPaging.DirectionType direction_type = 2;
  if (this->_internal_direction_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this->_internal_direction_type(), target);
  }

  // int32 limit = 3;
  if (this->_internal_limit() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        3, this->_internal_limit(), target);
  }

  // int32 offset = 4;
  if (this->_internal_offset() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        4, this->_internal_offset(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.IndicatorPaging)
  return target;
}

::size_t IndicatorPaging::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.IndicatorPaging)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.IndicatorPaging.OrderByType order_by_type = 1;
  if (this->_internal_order_by_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_order_by_type());
  }

  // .keyapis.telemetry_control.v1.IndicatorPaging.DirectionType direction_type = 2;
  if (this->_internal_direction_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_direction_type());
  }

  // int32 limit = 3;
  if (this->_internal_limit() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_limit());
  }

  // int32 offset = 4;
  if (this->_internal_offset() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_offset());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void IndicatorPaging::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const IndicatorPaging*>(
      &from));
}

void IndicatorPaging::MergeFrom(const IndicatorPaging& from) {
  IndicatorPaging* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.IndicatorPaging)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_order_by_type() != 0) {
    _this->_internal_set_order_by_type(from._internal_order_by_type());
  }
  if (from._internal_direction_type() != 0) {
    _this->_internal_set_direction_type(from._internal_direction_type());
  }
  if (from._internal_limit() != 0) {
    _this->_internal_set_limit(from._internal_limit());
  }
  if (from._internal_offset() != 0) {
    _this->_internal_set_offset(from._internal_offset());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void IndicatorPaging::CopyFrom(const IndicatorPaging& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.IndicatorPaging)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool IndicatorPaging::IsInitialized() const {
  return true;
}

void IndicatorPaging::InternalSwap(IndicatorPaging* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(IndicatorPaging, _impl_.offset_)
      + sizeof(IndicatorPaging::_impl_.offset_)
      - PROTOBUF_FIELD_OFFSET(IndicatorPaging, _impl_.order_by_type_)>(
          reinterpret_cast<char*>(&_impl_.order_by_type_),
          reinterpret_cast<char*>(&other->_impl_.order_by_type_));
}

std::string IndicatorPaging::GetTypeName() const {
  return "keyapis.telemetry_control.v1.IndicatorPaging";
}

// ===================================================================

class GetDeviceIndicatorListResponse_Error::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse_Error, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError& device_filter_validation(const GetDeviceIndicatorListResponse_Error* msg);
  static const ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError& device_paging_validation(const GetDeviceIndicatorListResponse_Error* msg);
};

const ::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError&
GetDeviceIndicatorListResponse_Error::_Internal::device_filter_validation(const GetDeviceIndicatorListResponse_Error* msg) {
  return *msg->_impl_.reason_.device_filter_validation_;
}
const ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError&
GetDeviceIndicatorListResponse_Error::_Internal::device_paging_validation(const GetDeviceIndicatorListResponse_Error* msg) {
  return *msg->_impl_.reason_.device_paging_validation_;
}
void GetDeviceIndicatorListResponse_Error::set_allocated_device_filter_validation(::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError* device_filter_validation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (device_filter_validation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(device_filter_validation);
    if (message_arena != submessage_arena) {
      device_filter_validation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, device_filter_validation, submessage_arena);
    }
    set_has_device_filter_validation();
    _impl_.reason_.device_filter_validation_ = device_filter_validation;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error.device_filter_validation)
}
void GetDeviceIndicatorListResponse_Error::set_allocated_device_paging_validation(::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError* device_paging_validation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (device_paging_validation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(device_paging_validation);
    if (message_arena != submessage_arena) {
      device_paging_validation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, device_paging_validation, submessage_arena);
    }
    set_has_device_paging_validation();
    _impl_.reason_.device_paging_validation_ = device_paging_validation;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error.device_paging_validation)
}
GetDeviceIndicatorListResponse_Error::GetDeviceIndicatorListResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
}
GetDeviceIndicatorListResponse_Error::GetDeviceIndicatorListResponse_Error(const GetDeviceIndicatorListResponse_Error& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorListResponse_Error* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kDeviceFilterValidation: {
      _this->_internal_mutable_device_filter_validation()->::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError::MergeFrom(
          from._internal_device_filter_validation());
      break;
    }
    case kDevicePagingValidation: {
      _this->_internal_mutable_device_paging_validation()->::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError::MergeFrom(
          from._internal_device_paging_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
}

inline void GetDeviceIndicatorListResponse_Error::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

GetDeviceIndicatorListResponse_Error::~GetDeviceIndicatorListResponse_Error() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorListResponse_Error::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void GetDeviceIndicatorListResponse_Error::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorListResponse_Error::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
  switch (reason_case()) {
    case kDeviceFilterValidation: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.device_filter_validation_;
      }
      break;
    }
    case kDevicePagingValidation: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.device_paging_validation_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void GetDeviceIndicatorListResponse_Error::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorListResponse_Error::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.IndicatorFilter.ValidationError device_filter_validation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_filter_validation(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.IndicatorPaging.ValidationError device_paging_validation = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_paging_validation(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorListResponse_Error::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (reason_case()) {
    case kDeviceFilterValidation: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::device_filter_validation(this),
          _Internal::device_filter_validation(this).GetCachedSize(), target, stream);
      break;
    }
    case kDevicePagingValidation: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::device_paging_validation(this),
          _Internal::device_paging_validation(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
  return target;
}

::size_t GetDeviceIndicatorListResponse_Error::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.IndicatorFilter.ValidationError device_filter_validation = 1;
    case kDeviceFilterValidation: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.device_filter_validation_);
      break;
    }
    // .keyapis.telemetry_control.v1.IndicatorPaging.ValidationError device_paging_validation = 2;
    case kDevicePagingValidation: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.device_paging_validation_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorListResponse_Error::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorListResponse_Error*>(
      &from));
}

void GetDeviceIndicatorListResponse_Error::MergeFrom(const GetDeviceIndicatorListResponse_Error& from) {
  GetDeviceIndicatorListResponse_Error* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kDeviceFilterValidation: {
      _this->_internal_mutable_device_filter_validation()->::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError::MergeFrom(
          from._internal_device_filter_validation());
      break;
    }
    case kDevicePagingValidation: {
      _this->_internal_mutable_device_paging_validation()->::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError::MergeFrom(
          from._internal_device_paging_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorListResponse_Error::CopyFrom(const GetDeviceIndicatorListResponse_Error& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorListResponse_Error::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorListResponse_Error::InternalSwap(GetDeviceIndicatorListResponse_Error* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceIndicatorListResponse_Error::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error";
}

// ===================================================================

class GetDeviceIndicatorListResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Indicator& data(const GetDeviceIndicatorListResponse* msg);
  static const ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse_Error& error(const GetDeviceIndicatorListResponse* msg);
};

const ::keyapis::telemetry_control::v1::Indicator&
GetDeviceIndicatorListResponse::_Internal::data(const GetDeviceIndicatorListResponse* msg) {
  return *msg->_impl_.type_.data_;
}
const ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse_Error&
GetDeviceIndicatorListResponse::_Internal::error(const GetDeviceIndicatorListResponse* msg) {
  return *msg->_impl_.type_.error_;
}
void GetDeviceIndicatorListResponse::set_allocated_data(::keyapis::telemetry_control::v1::Indicator* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.data)
}
void GetDeviceIndicatorListResponse::set_allocated_error(::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse_Error* error) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (error) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(error);
    if (message_arena != submessage_arena) {
      error = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, error, submessage_arena);
    }
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.error)
}
GetDeviceIndicatorListResponse::GetDeviceIndicatorListResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
}
GetDeviceIndicatorListResponse::GetDeviceIndicatorListResponse(const GetDeviceIndicatorListResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorListResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Indicator::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
}

inline void GetDeviceIndicatorListResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceIndicatorListResponse::~GetDeviceIndicatorListResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorListResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceIndicatorListResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorListResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case kError: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.error_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceIndicatorListResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorListResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Indicator data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error error = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_error(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorListResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (type_case()) {
    case kData: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::data(this),
          _Internal::data(this).GetCachedSize(), target, stream);
      break;
    }
    case kError: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::error(this),
          _Internal::error(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
  return target;
}

::size_t GetDeviceIndicatorListResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.Indicator data = 1;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    // .keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error error = 2;
    case kError: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.error_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorListResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorListResponse*>(
      &from));
}

void GetDeviceIndicatorListResponse::MergeFrom(const GetDeviceIndicatorListResponse& from) {
  GetDeviceIndicatorListResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Indicator::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorListResponse::CopyFrom(const GetDeviceIndicatorListResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorListResponse::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorListResponse::InternalSwap(GetDeviceIndicatorListResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceIndicatorListResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse";
}

// ===================================================================

class IndicatorFilter_ValidationError::_Internal {
 public:
};

IndicatorFilter_ValidationError::IndicatorFilter_ValidationError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.IndicatorFilter.ValidationError)
}
IndicatorFilter_ValidationError::IndicatorFilter_ValidationError(const IndicatorFilter_ValidationError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  IndicatorFilter_ValidationError* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.path_) {}

    , decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.path_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.path_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_path().empty()) {
    _this->_impl_.path_.Set(from._internal_path(), _this->GetArenaForAllocation());
  }
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_message().empty()) {
    _this->_impl_.message_.Set(from._internal_message(), _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.IndicatorFilter.ValidationError)
}

inline void IndicatorFilter_ValidationError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.path_) {}

    , decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.path_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.path_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

IndicatorFilter_ValidationError::~IndicatorFilter_ValidationError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.IndicatorFilter.ValidationError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void IndicatorFilter_ValidationError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.path_.Destroy();
  _impl_.message_.Destroy();
}

void IndicatorFilter_ValidationError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void IndicatorFilter_ValidationError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.IndicatorFilter.ValidationError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.path_.ClearToEmpty();
  _impl_.message_.ClearToEmpty();
  _internal_metadata_.Clear<std::string>();
}

const char* IndicatorFilter_ValidationError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string path = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_path();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // string message = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_message();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* IndicatorFilter_ValidationError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.IndicatorFilter.ValidationError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string path = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_path().empty()) {
    const std::string& _s = this->_internal_path();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.IndicatorFilter.ValidationError.path");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // string message = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    const std::string& _s = this->_internal_message();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.IndicatorFilter.ValidationError.message");
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.IndicatorFilter.ValidationError)
  return target;
}

::size_t IndicatorFilter_ValidationError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.IndicatorFilter.ValidationError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string path = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_path().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_path());
  }

  // string message = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_message());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void IndicatorFilter_ValidationError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const IndicatorFilter_ValidationError*>(
      &from));
}

void IndicatorFilter_ValidationError::MergeFrom(const IndicatorFilter_ValidationError& from) {
  IndicatorFilter_ValidationError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.IndicatorFilter.ValidationError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_path().empty()) {
    _this->_internal_set_path(from._internal_path());
  }
  if (!from._internal_message().empty()) {
    _this->_internal_set_message(from._internal_message());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void IndicatorFilter_ValidationError::CopyFrom(const IndicatorFilter_ValidationError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.IndicatorFilter.ValidationError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool IndicatorFilter_ValidationError::IsInitialized() const {
  return true;
}

void IndicatorFilter_ValidationError::InternalSwap(IndicatorFilter_ValidationError* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.path_, lhs_arena,
                                       &other->_impl_.path_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.message_, lhs_arena,
                                       &other->_impl_.message_, rhs_arena);
}

std::string IndicatorFilter_ValidationError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.IndicatorFilter.ValidationError";
}

// ===================================================================

class IndicatorFilter::_Internal {
 public:
};

IndicatorFilter::IndicatorFilter(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.IndicatorFilter)
}
IndicatorFilter::IndicatorFilter(const IndicatorFilter& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  IndicatorFilter* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.device_ids_) { from._impl_.device_ids_ }
    ,/* _impl_._device_ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.sign_types_) { from._internal_sign_types() }
    , /*decltype(_impl_._sign_types_cached_byte_size_)*/ { 0 }

    , decltype(_impl_.ids_) { from._impl_.ids_ }
    ,/* _impl_._ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.device_serial_numbers_){from._impl_.device_serial_numbers_}
    , decltype(_impl_.building_ids_) { from._impl_.building_ids_ }
    ,/* _impl_._building_ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.room_numbers_){from._impl_.room_numbers_}
    , decltype(_impl_.room_labels_){from._impl_.room_labels_}
    , decltype(_impl_.metric_point_ids_){from._impl_.metric_point_ids_}
    , decltype(_impl_.indicator_vendor_types_) { from._internal_indicator_vendor_types() }
    , /*decltype(_impl_._indicator_vendor_types_cached_byte_size_)*/ { 0 }

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.IndicatorFilter)
}

inline void IndicatorFilter::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.device_ids_) { arena }
    ,/* _impl_._device_ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.sign_types_) { arena }
    , /*decltype(_impl_._sign_types_cached_byte_size_)*/ { 0 }

    , decltype(_impl_.ids_) { arena }
    ,/* _impl_._ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.device_serial_numbers_){arena}
    , decltype(_impl_.building_ids_) { arena }
    ,/* _impl_._building_ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.room_numbers_){arena}
    , decltype(_impl_.room_labels_){arena}
    , decltype(_impl_.metric_point_ids_){arena}
    , decltype(_impl_.indicator_vendor_types_) { arena }
    , /*decltype(_impl_._indicator_vendor_types_cached_byte_size_)*/ { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

IndicatorFilter::~IndicatorFilter() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.IndicatorFilter)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void IndicatorFilter::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.device_ids_.~RepeatedField();
  _internal_mutable_sign_types()->~RepeatedField();
  _impl_.ids_.~RepeatedField();
  _internal_mutable_device_serial_numbers()->~RepeatedPtrField();
  _impl_.building_ids_.~RepeatedField();
  _internal_mutable_room_numbers()->~RepeatedPtrField();
  _internal_mutable_room_labels()->~RepeatedPtrField();
  _internal_mutable_metric_point_ids()->~RepeatedPtrField();
  _internal_mutable_indicator_vendor_types()->~RepeatedField();
}

void IndicatorFilter::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void IndicatorFilter::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.IndicatorFilter)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_mutable_device_ids()->Clear();
  _internal_mutable_sign_types()->Clear();
  _internal_mutable_ids()->Clear();
  _internal_mutable_device_serial_numbers()->Clear();
  _internal_mutable_building_ids()->Clear();
  _internal_mutable_room_numbers()->Clear();
  _internal_mutable_room_labels()->Clear();
  _internal_mutable_metric_point_ids()->Clear();
  _internal_mutable_indicator_vendor_types()->Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* IndicatorFilter::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated int32 device_ids = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_device_ids(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 8) {
          _internal_add_device_ids(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated .keyapis.telemetry_control.v1.Indicator.SignType sign_types = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(_internal_mutable_sign_types(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 16) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_add_sign_types(static_cast<::keyapis::telemetry_control::v1::Indicator_SignType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated int32 ids = 3 [deprecated = true, (.google.api.field_visibility) = {
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_ids(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 24) {
          _internal_add_ids(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string device_serial_numbers = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_device_serial_numbers();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated int32 building_ids = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_building_ids(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 40) {
          _internal_add_building_ids(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string room_numbers = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_room_numbers();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string room_labels = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_room_labels();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string metric_point_ids = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_metric_point_ids();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated .keyapis.telemetry_control.v1.Indicator.VendorType indicator_vendor_types = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 74)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(_internal_mutable_indicator_vendor_types(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 72) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_add_indicator_vendor_types(static_cast<::keyapis::telemetry_control::v1::Indicator_VendorType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* IndicatorFilter::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.IndicatorFilter)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated int32 device_ids = 1;
  {
    int byte_size = _impl_._device_ids_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(1, _internal_device_ids(),
                                                 byte_size, target);
    }
  }

  // repeated .keyapis.telemetry_control.v1.Indicator.SignType sign_types = 2;
  {
    int byte_size = _impl_._sign_types_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteEnumPacked(2, _internal_sign_types(),
                                       byte_size, target);
    }
  }

  // repeated int32 ids = 3 [deprecated = true, (.google.api.field_visibility) = {
  {
    int byte_size = _impl_._ids_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(3, _internal_ids(),
                                                 byte_size, target);
    }
  }

  // repeated string device_serial_numbers = 4;
  for (int i = 0, n = this->_internal_device_serial_numbers_size(); i < n; ++i) {
    const auto& s = this->_internal_device_serial_numbers(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.IndicatorFilter.device_serial_numbers");
    target = stream->WriteString(4, s, target);
  }

  // repeated int32 building_ids = 5;
  {
    int byte_size = _impl_._building_ids_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(5, _internal_building_ids(),
                                                 byte_size, target);
    }
  }

  // repeated string room_numbers = 6;
  for (int i = 0, n = this->_internal_room_numbers_size(); i < n; ++i) {
    const auto& s = this->_internal_room_numbers(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.IndicatorFilter.room_numbers");
    target = stream->WriteString(6, s, target);
  }

  // repeated string room_labels = 7;
  for (int i = 0, n = this->_internal_room_labels_size(); i < n; ++i) {
    const auto& s = this->_internal_room_labels(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.IndicatorFilter.room_labels");
    target = stream->WriteString(7, s, target);
  }

  // repeated string metric_point_ids = 8;
  for (int i = 0, n = this->_internal_metric_point_ids_size(); i < n; ++i) {
    const auto& s = this->_internal_metric_point_ids(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.IndicatorFilter.metric_point_ids");
    target = stream->WriteString(8, s, target);
  }

  // repeated .keyapis.telemetry_control.v1.Indicator.VendorType indicator_vendor_types = 9;
  {
    int byte_size = _impl_._indicator_vendor_types_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteEnumPacked(9, _internal_indicator_vendor_types(),
                                       byte_size, target);
    }
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.IndicatorFilter)
  return target;
}

::size_t IndicatorFilter::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.IndicatorFilter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated int32 device_ids = 1;
  {
    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
        this->_internal_device_ids())
    ;
    _impl_._device_ids_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }

  // repeated .keyapis.telemetry_control.v1.Indicator.SignType sign_types = 2;
  {
    std::size_t data_size = 0;
    auto count = static_cast<std::size_t>(this->_internal_sign_types_size());

    for (std::size_t i = 0; i < count; ++i) {
      data_size += ::_pbi::WireFormatLite::EnumSize(
          this->_internal_sign_types(static_cast<int>(i)));
    }
    total_size += data_size;
    if (data_size > 0) {
      total_size += 1;
      total_size += ::_pbi::WireFormatLite::Int32Size(
          static_cast<int32_t>(data_size));
    }
    _impl_._sign_types_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
  }

  // repeated int32 ids = 3 [deprecated = true, (.google.api.field_visibility) = {
  {
    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
        this->_internal_ids())
    ;
    _impl_._ids_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }

  // repeated string device_serial_numbers = 4;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_device_serial_numbers().size());
  for (int i = 0, n = _internal_device_serial_numbers().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_device_serial_numbers().Get(i));
  }

  // repeated int32 building_ids = 5;
  {
    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
        this->_internal_building_ids())
    ;
    _impl_._building_ids_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }

  // repeated string room_numbers = 6;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_room_numbers().size());
  for (int i = 0, n = _internal_room_numbers().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_room_numbers().Get(i));
  }

  // repeated string room_labels = 7;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_room_labels().size());
  for (int i = 0, n = _internal_room_labels().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_room_labels().Get(i));
  }

  // repeated string metric_point_ids = 8;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_metric_point_ids().size());
  for (int i = 0, n = _internal_metric_point_ids().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_metric_point_ids().Get(i));
  }

  // repeated .keyapis.telemetry_control.v1.Indicator.VendorType indicator_vendor_types = 9;
  {
    std::size_t data_size = 0;
    auto count = static_cast<std::size_t>(this->_internal_indicator_vendor_types_size());

    for (std::size_t i = 0; i < count; ++i) {
      data_size += ::_pbi::WireFormatLite::EnumSize(
          this->_internal_indicator_vendor_types(static_cast<int>(i)));
    }
    total_size += data_size;
    if (data_size > 0) {
      total_size += 1;
      total_size += ::_pbi::WireFormatLite::Int32Size(
          static_cast<int32_t>(data_size));
    }
    _impl_._indicator_vendor_types_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void IndicatorFilter::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const IndicatorFilter*>(
      &from));
}

void IndicatorFilter::MergeFrom(const IndicatorFilter& from) {
  IndicatorFilter* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.IndicatorFilter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.device_ids_.MergeFrom(from._impl_.device_ids_);
  _this->_internal_mutable_sign_types()->MergeFrom(from._internal_sign_types());
  _this->_impl_.ids_.MergeFrom(from._impl_.ids_);
  _this->_internal_mutable_device_serial_numbers()->MergeFrom(from._internal_device_serial_numbers());
  _this->_impl_.building_ids_.MergeFrom(from._impl_.building_ids_);
  _this->_internal_mutable_room_numbers()->MergeFrom(from._internal_room_numbers());
  _this->_internal_mutable_room_labels()->MergeFrom(from._internal_room_labels());
  _this->_internal_mutable_metric_point_ids()->MergeFrom(from._internal_metric_point_ids());
  _this->_internal_mutable_indicator_vendor_types()->MergeFrom(from._internal_indicator_vendor_types());
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void IndicatorFilter::CopyFrom(const IndicatorFilter& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.IndicatorFilter)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool IndicatorFilter::IsInitialized() const {
  return true;
}

void IndicatorFilter::InternalSwap(IndicatorFilter* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.device_ids_.InternalSwap(&other->_impl_.device_ids_);
  _internal_mutable_sign_types()->InternalSwap(
      other->_internal_mutable_sign_types());
  _impl_.ids_.InternalSwap(&other->_impl_.ids_);
  _internal_mutable_device_serial_numbers()->InternalSwap(
      other->_internal_mutable_device_serial_numbers());
  _impl_.building_ids_.InternalSwap(&other->_impl_.building_ids_);
  _internal_mutable_room_numbers()->InternalSwap(
      other->_internal_mutable_room_numbers());
  _internal_mutable_room_labels()->InternalSwap(
      other->_internal_mutable_room_labels());
  _internal_mutable_metric_point_ids()->InternalSwap(
      other->_internal_mutable_metric_point_ids());
  _internal_mutable_indicator_vendor_types()->InternalSwap(
      other->_internal_mutable_indicator_vendor_types());
}

std::string IndicatorFilter::GetTypeName() const {
  return "keyapis.telemetry_control.v1.IndicatorFilter";
}

// ===================================================================

class GetDeviceIndicatorCountRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<GetDeviceIndicatorCountRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(GetDeviceIndicatorCountRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::IndicatorFilter& filter(const GetDeviceIndicatorCountRequest* msg);
  static void set_has_filter(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::IndicatorFilter&
GetDeviceIndicatorCountRequest::_Internal::filter(const GetDeviceIndicatorCountRequest* msg) {
  return *msg->_impl_.filter_;
}
GetDeviceIndicatorCountRequest::GetDeviceIndicatorCountRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest)
}
GetDeviceIndicatorCountRequest::GetDeviceIndicatorCountRequest(const GetDeviceIndicatorCountRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorCountRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.filter_ = new ::keyapis::telemetry_control::v1::IndicatorFilter(*from._impl_.filter_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest)
}

inline void GetDeviceIndicatorCountRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
  };
}

GetDeviceIndicatorCountRequest::~GetDeviceIndicatorCountRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorCountRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.filter_;
}

void GetDeviceIndicatorCountRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorCountRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.filter_ != nullptr);
    _impl_.filter_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorCountRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.IndicatorFilter filter = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_filter(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorCountRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.IndicatorFilter filter = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::filter(this),
        _Internal::filter(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest)
  return target;
}

::size_t GetDeviceIndicatorCountRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.IndicatorFilter filter = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.filter_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorCountRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorCountRequest*>(
      &from));
}

void GetDeviceIndicatorCountRequest::MergeFrom(const GetDeviceIndicatorCountRequest& from) {
  GetDeviceIndicatorCountRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_filter()->::keyapis::telemetry_control::v1::IndicatorFilter::MergeFrom(
        from._internal_filter());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorCountRequest::CopyFrom(const GetDeviceIndicatorCountRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorCountRequest::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorCountRequest::InternalSwap(GetDeviceIndicatorCountRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.filter_, other->_impl_.filter_);
}

std::string GetDeviceIndicatorCountRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest";
}

// ===================================================================

class GetDeviceIndicatorCountResponse_Error::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse_Error, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError& device_filter_validation(const GetDeviceIndicatorCountResponse_Error* msg);
};

const ::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError&
GetDeviceIndicatorCountResponse_Error::_Internal::device_filter_validation(const GetDeviceIndicatorCountResponse_Error* msg) {
  return *msg->_impl_.reason_.device_filter_validation_;
}
void GetDeviceIndicatorCountResponse_Error::set_allocated_device_filter_validation(::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError* device_filter_validation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (device_filter_validation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(device_filter_validation);
    if (message_arena != submessage_arena) {
      device_filter_validation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, device_filter_validation, submessage_arena);
    }
    set_has_device_filter_validation();
    _impl_.reason_.device_filter_validation_ = device_filter_validation;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error.device_filter_validation)
}
GetDeviceIndicatorCountResponse_Error::GetDeviceIndicatorCountResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
}
GetDeviceIndicatorCountResponse_Error::GetDeviceIndicatorCountResponse_Error(const GetDeviceIndicatorCountResponse_Error& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorCountResponse_Error* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kDeviceFilterValidation: {
      _this->_internal_mutable_device_filter_validation()->::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError::MergeFrom(
          from._internal_device_filter_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
}

inline void GetDeviceIndicatorCountResponse_Error::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

GetDeviceIndicatorCountResponse_Error::~GetDeviceIndicatorCountResponse_Error() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorCountResponse_Error::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void GetDeviceIndicatorCountResponse_Error::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorCountResponse_Error::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
  switch (reason_case()) {
    case kDeviceFilterValidation: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.device_filter_validation_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void GetDeviceIndicatorCountResponse_Error::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorCountResponse_Error::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.IndicatorFilter.ValidationError device_filter_validation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_filter_validation(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorCountResponse_Error::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.IndicatorFilter.ValidationError device_filter_validation = 1;
  if (reason_case() == kDeviceFilterValidation) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::device_filter_validation(this),
        _Internal::device_filter_validation(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
  return target;
}

::size_t GetDeviceIndicatorCountResponse_Error::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.IndicatorFilter.ValidationError device_filter_validation = 1;
    case kDeviceFilterValidation: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.device_filter_validation_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorCountResponse_Error::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorCountResponse_Error*>(
      &from));
}

void GetDeviceIndicatorCountResponse_Error::MergeFrom(const GetDeviceIndicatorCountResponse_Error& from) {
  GetDeviceIndicatorCountResponse_Error* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kDeviceFilterValidation: {
      _this->_internal_mutable_device_filter_validation()->::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError::MergeFrom(
          from._internal_device_filter_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorCountResponse_Error::CopyFrom(const GetDeviceIndicatorCountResponse_Error& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorCountResponse_Error::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorCountResponse_Error::InternalSwap(GetDeviceIndicatorCountResponse_Error* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceIndicatorCountResponse_Error::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error";
}

// ===================================================================

class GetDeviceIndicatorCountResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse_Error& error(const GetDeviceIndicatorCountResponse* msg);
};

const ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse_Error&
GetDeviceIndicatorCountResponse::_Internal::error(const GetDeviceIndicatorCountResponse* msg) {
  return *msg->_impl_.type_.error_;
}
void GetDeviceIndicatorCountResponse::set_allocated_error(::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse_Error* error) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (error) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(error);
    if (message_arena != submessage_arena) {
      error = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, error, submessage_arena);
    }
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.error)
}
GetDeviceIndicatorCountResponse::GetDeviceIndicatorCountResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
}
GetDeviceIndicatorCountResponse::GetDeviceIndicatorCountResponse(const GetDeviceIndicatorCountResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorCountResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_set_data(from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
}

inline void GetDeviceIndicatorCountResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceIndicatorCountResponse::~GetDeviceIndicatorCountResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorCountResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceIndicatorCountResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorCountResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
  switch (type_case()) {
    case kData: {
      // No need to clear
      break;
    }
    case kError: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.error_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceIndicatorCountResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorCountResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _internal_set_data(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error error = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_error(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorCountResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (type_case()) {
    case kData: {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteInt32ToArray(
          1, this->_internal_data(), target);
      break;
    }
    case kError: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::error(this),
          _Internal::error(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
  return target;
}

::size_t GetDeviceIndicatorCountResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // int32 data = 1;
    case kData: {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this->_internal_data());
      break;
    }
    // .keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error error = 2;
    case kError: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.error_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorCountResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorCountResponse*>(
      &from));
}

void GetDeviceIndicatorCountResponse::MergeFrom(const GetDeviceIndicatorCountResponse& from) {
  GetDeviceIndicatorCountResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_set_data(from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorCountResponse::CopyFrom(const GetDeviceIndicatorCountResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorCountResponse::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorCountResponse::InternalSwap(GetDeviceIndicatorCountResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceIndicatorCountResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse";
}

// ===================================================================

class DeleteDeviceIndicatorRequest::_Internal {
 public:
};

DeleteDeviceIndicatorRequest::DeleteDeviceIndicatorRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest)
}
DeleteDeviceIndicatorRequest::DeleteDeviceIndicatorRequest(const DeleteDeviceIndicatorRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest)
}

inline void DeleteDeviceIndicatorRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.id_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DeleteDeviceIndicatorRequest::~DeleteDeviceIndicatorRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeleteDeviceIndicatorRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void DeleteDeviceIndicatorRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeleteDeviceIndicatorRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.id_ = 0;
  _internal_metadata_.Clear<std::string>();
}

const char* DeleteDeviceIndicatorRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _impl_.id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeleteDeviceIndicatorRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_id(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest)
  return target;
}

::size_t DeleteDeviceIndicatorRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeleteDeviceIndicatorRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeleteDeviceIndicatorRequest*>(
      &from));
}

void DeleteDeviceIndicatorRequest::MergeFrom(const DeleteDeviceIndicatorRequest& from) {
  DeleteDeviceIndicatorRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_id() != 0) {
    _this->_internal_set_id(from._internal_id());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeleteDeviceIndicatorRequest::CopyFrom(const DeleteDeviceIndicatorRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeleteDeviceIndicatorRequest::IsInitialized() const {
  return true;
}

void DeleteDeviceIndicatorRequest::InternalSwap(DeleteDeviceIndicatorRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);

  swap(_impl_.id_, other->_impl_.id_);
}

std::string DeleteDeviceIndicatorRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest";
}

// ===================================================================

class DeleteDeviceIndicatorResponse::_Internal {
 public:
};

DeleteDeviceIndicatorResponse::DeleteDeviceIndicatorResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse)
}
DeleteDeviceIndicatorResponse::DeleteDeviceIndicatorResponse(const DeleteDeviceIndicatorResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse)
}

inline void DeleteDeviceIndicatorResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

DeleteDeviceIndicatorResponse::~DeleteDeviceIndicatorResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeleteDeviceIndicatorResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void DeleteDeviceIndicatorResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeleteDeviceIndicatorResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* DeleteDeviceIndicatorResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeleteDeviceIndicatorResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse)
  return target;
}

::size_t DeleteDeviceIndicatorResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeleteDeviceIndicatorResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeleteDeviceIndicatorResponse*>(
      &from));
}

void DeleteDeviceIndicatorResponse::MergeFrom(const DeleteDeviceIndicatorResponse& from) {
  DeleteDeviceIndicatorResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeleteDeviceIndicatorResponse::CopyFrom(const DeleteDeviceIndicatorResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeleteDeviceIndicatorResponse::IsInitialized() const {
  return true;
}

void DeleteDeviceIndicatorResponse::InternalSwap(DeleteDeviceIndicatorResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string DeleteDeviceIndicatorResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse";
}

// ===================================================================

class PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::_Internal {
 public:
};

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success)
}
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success)
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success)
  return target;
}

::size_t PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success*>(
      &from));
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::MergeFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success& from) {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::CopyFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::IsInitialized() const {
  return true;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::InternalSwap(PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success";
}

// ===================================================================

class PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::_Internal {
 public:
};

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError)
}
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_message().empty()) {
    _this->_impl_.message_.Set(from._internal_message(), _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError)
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.message_.Destroy();
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.message_.ClearToEmpty();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string message = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_message();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string message = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    const std::string& _s = this->_internal_message();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError.message");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError)
  return target;
}

::size_t PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string message = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_message());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError*>(
      &from));
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::MergeFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError& from) {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_message().empty()) {
    _this->_internal_set_message(from._internal_message());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::CopyFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::IsInitialized() const {
  return true;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::InternalSwap(PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.message_, lhs_arena,
                                       &other->_impl_.message_, rhs_arena);
}

std::string PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError";
}

// ===================================================================

class PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::_Internal {
 public:
};

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError)
}
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError)
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError)
  return target;
}

::size_t PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError*>(
      &from));
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::MergeFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError& from) {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::CopyFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::IsInitialized() const {
  return true;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::InternalSwap(PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError";
}

// ===================================================================

class PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::_Internal {
 public:
};

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError)
}
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError)
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError)
  return target;
}

::size_t PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError*>(
      &from));
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::MergeFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError& from) {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::CopyFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::IsInitialized() const {
  return true;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::InternalSwap(PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError";
}

// ===================================================================

class PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::_Internal {
 public:
};

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError)
}
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError)
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError)
  return target;
}

::size_t PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError*>(
      &from));
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::MergeFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError& from) {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::CopyFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::IsInitialized() const {
  return true;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::InternalSwap(PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError";
}

// ===================================================================

class PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError& post_device_request_unknown(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError& post_device_request_ip(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError& post_device_request_port(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError& post_device_request_network_address(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* msg);
};

const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError&
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::_Internal::post_device_request_unknown(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* msg) {
  return *msg->_impl_.reason_.post_device_request_unknown_;
}
const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError&
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::_Internal::post_device_request_ip(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* msg) {
  return *msg->_impl_.reason_.post_device_request_ip_;
}
const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError&
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::_Internal::post_device_request_port(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* msg) {
  return *msg->_impl_.reason_.post_device_request_port_;
}
const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError&
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::_Internal::post_device_request_network_address(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* msg) {
  return *msg->_impl_.reason_.post_device_request_network_address_;
}
void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::set_allocated_post_device_request_unknown(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError* post_device_request_unknown) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (post_device_request_unknown) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(post_device_request_unknown);
    if (message_arena != submessage_arena) {
      post_device_request_unknown = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, post_device_request_unknown, submessage_arena);
    }
    set_has_post_device_request_unknown();
    _impl_.reason_.post_device_request_unknown_ = post_device_request_unknown;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.post_device_request_unknown)
}
void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::set_allocated_post_device_request_ip(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError* post_device_request_ip) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (post_device_request_ip) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(post_device_request_ip);
    if (message_arena != submessage_arena) {
      post_device_request_ip = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, post_device_request_ip, submessage_arena);
    }
    set_has_post_device_request_ip();
    _impl_.reason_.post_device_request_ip_ = post_device_request_ip;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.post_device_request_ip)
}
void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::set_allocated_post_device_request_port(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError* post_device_request_port) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (post_device_request_port) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(post_device_request_port);
    if (message_arena != submessage_arena) {
      post_device_request_port = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, post_device_request_port, submessage_arena);
    }
    set_has_post_device_request_port();
    _impl_.reason_.post_device_request_port_ = post_device_request_port;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.post_device_request_port)
}
void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::set_allocated_post_device_request_network_address(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError* post_device_request_network_address) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (post_device_request_network_address) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(post_device_request_network_address);
    if (message_arena != submessage_arena) {
      post_device_request_network_address = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, post_device_request_network_address, submessage_arena);
    }
    set_has_post_device_request_network_address();
    _impl_.reason_.post_device_request_network_address_ = post_device_request_network_address;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.post_device_request_network_address)
}
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
}
PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kPostDeviceRequestUnknown: {
      _this->_internal_mutable_post_device_request_unknown()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::MergeFrom(
          from._internal_post_device_request_unknown());
      break;
    }
    case kPostDeviceRequestIp: {
      _this->_internal_mutable_post_device_request_ip()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::MergeFrom(
          from._internal_post_device_request_ip());
      break;
    }
    case kPostDeviceRequestPort: {
      _this->_internal_mutable_post_device_request_port()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::MergeFrom(
          from._internal_post_device_request_port());
      break;
    }
    case kPostDeviceRequestNetworkAddress: {
      _this->_internal_mutable_post_device_request_network_address()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::MergeFrom(
          from._internal_post_device_request_network_address());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::~PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
  switch (reason_case()) {
    case kPostDeviceRequestUnknown: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.post_device_request_unknown_;
      }
      break;
    }
    case kPostDeviceRequestIp: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.post_device_request_ip_;
      }
      break;
    }
    case kPostDeviceRequestPort: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.post_device_request_port_;
      }
      break;
    }
    case kPostDeviceRequestNetworkAddress: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.post_device_request_network_address_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError post_device_request_unknown = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_post_device_request_unknown(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError post_device_request_ip = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_post_device_request_ip(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError post_device_request_port = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_post_device_request_port(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError post_device_request_network_address = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_post_device_request_network_address(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (reason_case()) {
    case kPostDeviceRequestUnknown: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::post_device_request_unknown(this),
          _Internal::post_device_request_unknown(this).GetCachedSize(), target, stream);
      break;
    }
    case kPostDeviceRequestIp: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::post_device_request_ip(this),
          _Internal::post_device_request_ip(this).GetCachedSize(), target, stream);
      break;
    }
    case kPostDeviceRequestPort: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(3, _Internal::post_device_request_port(this),
          _Internal::post_device_request_port(this).GetCachedSize(), target, stream);
      break;
    }
    case kPostDeviceRequestNetworkAddress: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(4, _Internal::post_device_request_network_address(this),
          _Internal::post_device_request_network_address(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
  return target;
}

::size_t PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError post_device_request_unknown = 1;
    case kPostDeviceRequestUnknown: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.post_device_request_unknown_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError post_device_request_ip = 2;
    case kPostDeviceRequestIp: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.post_device_request_ip_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError post_device_request_port = 3;
    case kPostDeviceRequestPort: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.post_device_request_port_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError post_device_request_network_address = 4;
    case kPostDeviceRequestNetworkAddress: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.post_device_request_network_address_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error*>(
      &from));
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::MergeFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error& from) {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kPostDeviceRequestUnknown: {
      _this->_internal_mutable_post_device_request_unknown()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError::MergeFrom(
          from._internal_post_device_request_unknown());
      break;
    }
    case kPostDeviceRequestIp: {
      _this->_internal_mutable_post_device_request_ip()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError::MergeFrom(
          from._internal_post_device_request_ip());
      break;
    }
    case kPostDeviceRequestPort: {
      _this->_internal_mutable_post_device_request_port()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError::MergeFrom(
          from._internal_post_device_request_port());
      break;
    }
    case kPostDeviceRequestNetworkAddress: {
      _this->_internal_mutable_post_device_request_network_address()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError::MergeFrom(
          from._internal_post_device_request_network_address());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::CopyFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::IsInitialized() const {
  return true;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::InternalSwap(PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error";
}

// ===================================================================

class PostDeviceFullDuplexRequest_DeviceAsyncStatus::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success& data(const PostDeviceFullDuplexRequest_DeviceAsyncStatus* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error& error(const PostDeviceFullDuplexRequest_DeviceAsyncStatus* msg);
};

const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success&
PostDeviceFullDuplexRequest_DeviceAsyncStatus::_Internal::data(const PostDeviceFullDuplexRequest_DeviceAsyncStatus* msg) {
  return *msg->_impl_.type_.data_;
}
const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error&
PostDeviceFullDuplexRequest_DeviceAsyncStatus::_Internal::error(const PostDeviceFullDuplexRequest_DeviceAsyncStatus* msg) {
  return *msg->_impl_.type_.error_;
}
void PostDeviceFullDuplexRequest_DeviceAsyncStatus::set_allocated_data(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.data)
}
void PostDeviceFullDuplexRequest_DeviceAsyncStatus::set_allocated_error(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error* error) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (error) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(error);
    if (message_arena != submessage_arena) {
      error = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, error, submessage_arena);
    }
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.error)
}
PostDeviceFullDuplexRequest_DeviceAsyncStatus::PostDeviceFullDuplexRequest_DeviceAsyncStatus(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
}
PostDeviceFullDuplexRequest_DeviceAsyncStatus::PostDeviceFullDuplexRequest_DeviceAsyncStatus(const PostDeviceFullDuplexRequest_DeviceAsyncStatus& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.device_id_) {}

    , decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _this->_impl_.device_id_ = from._impl_.device_id_;
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.device_id_) { 0 }

    , decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

PostDeviceFullDuplexRequest_DeviceAsyncStatus::~PostDeviceFullDuplexRequest_DeviceAsyncStatus() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceFullDuplexRequest_DeviceAsyncStatus::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case kError: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.error_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void PostDeviceFullDuplexRequest_DeviceAsyncStatus::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.device_id_ = 0;
  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceFullDuplexRequest_DeviceAsyncStatus::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 device_id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _impl_.device_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success data = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error error = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_error(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceFullDuplexRequest_DeviceAsyncStatus::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 device_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_device_id(), target);
  }

  switch (type_case()) {
    case kData: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::data(this),
          _Internal::data(this).GetCachedSize(), target, stream);
      break;
    }
    case kError: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(3, _Internal::error(this),
          _Internal::error(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
  return target;
}

::size_t PostDeviceFullDuplexRequest_DeviceAsyncStatus::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 device_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_device_id());
  }

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success data = 2;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error error = 3;
    case kError: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.error_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceFullDuplexRequest_DeviceAsyncStatus*>(
      &from));
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus::MergeFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus& from) {
  PostDeviceFullDuplexRequest_DeviceAsyncStatus* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_device_id() != 0) {
    _this->_internal_set_device_id(from._internal_device_id());
  }
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus::CopyFrom(const PostDeviceFullDuplexRequest_DeviceAsyncStatus& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceFullDuplexRequest_DeviceAsyncStatus::IsInitialized() const {
  return true;
}

void PostDeviceFullDuplexRequest_DeviceAsyncStatus::InternalSwap(PostDeviceFullDuplexRequest_DeviceAsyncStatus* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);

  swap(_impl_.device_id_, other->_impl_.device_id_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceFullDuplexRequest_DeviceAsyncStatus::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus";
}

// ===================================================================

class PostDeviceFullDuplexRequest::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus& post_device_full_duplex_device_async_status(const PostDeviceFullDuplexRequest* msg);
};

const ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus&
PostDeviceFullDuplexRequest::_Internal::post_device_full_duplex_device_async_status(const PostDeviceFullDuplexRequest* msg) {
  return *msg->_impl_.task_.post_device_full_duplex_device_async_status_;
}
void PostDeviceFullDuplexRequest::set_allocated_post_device_full_duplex_device_async_status(::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus* post_device_full_duplex_device_async_status) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_task();
  if (post_device_full_duplex_device_async_status) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(post_device_full_duplex_device_async_status);
    if (message_arena != submessage_arena) {
      post_device_full_duplex_device_async_status = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, post_device_full_duplex_device_async_status, submessage_arena);
    }
    set_has_post_device_full_duplex_device_async_status();
    _impl_.task_.post_device_full_duplex_device_async_status_ = post_device_full_duplex_device_async_status;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.post_device_full_duplex_device_async_status)
}
PostDeviceFullDuplexRequest::PostDeviceFullDuplexRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
}
PostDeviceFullDuplexRequest::PostDeviceFullDuplexRequest(const PostDeviceFullDuplexRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceFullDuplexRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.request_id_) {}

    , decltype(_impl_.task_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.request_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.request_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_request_id().empty()) {
    _this->_impl_.request_id_.Set(from._internal_request_id(), _this->GetArenaForAllocation());
  }
  clear_has_task();
  switch (from.task_case()) {
    case kPostDeviceFullDuplexDeviceAsyncStatus: {
      _this->_internal_mutable_post_device_full_duplex_device_async_status()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus::MergeFrom(
          from._internal_post_device_full_duplex_device_async_status());
      break;
    }
    case TASK_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
}

inline void PostDeviceFullDuplexRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.request_id_) {}

    , decltype(_impl_.task_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  _impl_.request_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.request_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  clear_has_task();
}

PostDeviceFullDuplexRequest::~PostDeviceFullDuplexRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceFullDuplexRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.request_id_.Destroy();
  if (has_task()) {
    clear_task();
  }
}

void PostDeviceFullDuplexRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceFullDuplexRequest::clear_task() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
  switch (task_case()) {
    case kPostDeviceFullDuplexDeviceAsyncStatus: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.task_.post_device_full_duplex_device_async_status_;
      }
      break;
    }
    case TASK_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TASK_NOT_SET;
}


void PostDeviceFullDuplexRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.request_id_.ClearToEmpty();
  clear_task();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceFullDuplexRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_request_id();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus post_device_full_duplex_device_async_status = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_post_device_full_duplex_device_async_status(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceFullDuplexRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_request_id().empty()) {
    const std::string& _s = this->_internal_request_id();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.request_id");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus post_device_full_duplex_device_async_status = 2;
  if (task_case() == kPostDeviceFullDuplexDeviceAsyncStatus) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::post_device_full_duplex_device_async_status(this),
        _Internal::post_device_full_duplex_device_async_status(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
  return target;
}

::size_t PostDeviceFullDuplexRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_request_id().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_request_id());
  }

  switch (task_case()) {
    // .keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus post_device_full_duplex_device_async_status = 2;
    case kPostDeviceFullDuplexDeviceAsyncStatus: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.task_.post_device_full_duplex_device_async_status_);
      break;
    }
    case TASK_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceFullDuplexRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceFullDuplexRequest*>(
      &from));
}

void PostDeviceFullDuplexRequest::MergeFrom(const PostDeviceFullDuplexRequest& from) {
  PostDeviceFullDuplexRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_request_id().empty()) {
    _this->_internal_set_request_id(from._internal_request_id());
  }
  switch (from.task_case()) {
    case kPostDeviceFullDuplexDeviceAsyncStatus: {
      _this->_internal_mutable_post_device_full_duplex_device_async_status()->::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus::MergeFrom(
          from._internal_post_device_full_duplex_device_async_status());
      break;
    }
    case TASK_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceFullDuplexRequest::CopyFrom(const PostDeviceFullDuplexRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceFullDuplexRequest::IsInitialized() const {
  return true;
}

void PostDeviceFullDuplexRequest::InternalSwap(PostDeviceFullDuplexRequest* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.request_id_, lhs_arena,
                                       &other->_impl_.request_id_, rhs_arena);
  swap(_impl_.task_, other->_impl_.task_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceFullDuplexRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest";
}

// ===================================================================

class PostDeviceRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<PostDeviceRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(PostDeviceRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::Device& device(const PostDeviceRequest* msg);
  static void set_has_device(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::Device&
PostDeviceRequest::_Internal::device(const PostDeviceRequest* msg) {
  return *msg->_impl_.device_;
}
PostDeviceRequest::PostDeviceRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceRequest)
}
PostDeviceRequest::PostDeviceRequest(const PostDeviceRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.device_ = new ::keyapis::telemetry_control::v1::Device(*from._impl_.device_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceRequest)
}

inline void PostDeviceRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_){nullptr}
  };
}

PostDeviceRequest::~PostDeviceRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.device_;
}

void PostDeviceRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.device_ != nullptr);
    _impl_.device_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Device device = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_device(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.Device device = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::device(this),
        _Internal::device(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceRequest)
  return target;
}

::size_t PostDeviceRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.Device device = 1 [(.google.api.field_behavior) = REQUIRED];
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.device_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceRequest*>(
      &from));
}

void PostDeviceRequest::MergeFrom(const PostDeviceRequest& from) {
  PostDeviceRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_device()->::keyapis::telemetry_control::v1::Device::MergeFrom(
        from._internal_device());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceRequest::CopyFrom(const PostDeviceRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceRequest::IsInitialized() const {
  return true;
}

void PostDeviceRequest::InternalSwap(PostDeviceRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.device_, other->_impl_.device_);
}

std::string PostDeviceRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceRequest";
}

// ===================================================================

class PostDeviceReplaceRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<PostDeviceReplaceRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(PostDeviceReplaceRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::Device& device(const PostDeviceReplaceRequest* msg);
  static void set_has_device(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::Device&
PostDeviceReplaceRequest::_Internal::device(const PostDeviceReplaceRequest* msg) {
  return *msg->_impl_.device_;
}
PostDeviceReplaceRequest::PostDeviceReplaceRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceRequest)
}
PostDeviceReplaceRequest::PostDeviceReplaceRequest(const PostDeviceReplaceRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceReplaceRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_){nullptr}
    , decltype(_impl_.replace_device_id_) {}
  };

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.device_ = new ::keyapis::telemetry_control::v1::Device(*from._impl_.device_);
  }
  _this->_impl_.replace_device_id_ = from._impl_.replace_device_id_;
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceRequest)
}

inline void PostDeviceReplaceRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_){nullptr}
    , decltype(_impl_.replace_device_id_) { 0 }

  };
}

PostDeviceReplaceRequest::~PostDeviceReplaceRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceReplaceRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceReplaceRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.device_;
}

void PostDeviceReplaceRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceReplaceRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.device_ != nullptr);
    _impl_.device_->Clear();
  }
  _impl_.replace_device_id_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceReplaceRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 replace_device_id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _impl_.replace_device_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device device = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_device(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceReplaceRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceReplaceRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 replace_device_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_replace_device_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_replace_device_id(), target);
  }

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.Device device = 2 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::device(this),
        _Internal::device(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceReplaceRequest)
  return target;
}

::size_t PostDeviceReplaceRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceReplaceRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.Device device = 2 [(.google.api.field_behavior) = REQUIRED];
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.device_);
  }

  // int32 replace_device_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_replace_device_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_replace_device_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceReplaceRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceReplaceRequest*>(
      &from));
}

void PostDeviceReplaceRequest::MergeFrom(const PostDeviceReplaceRequest& from) {
  PostDeviceReplaceRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_device()->::keyapis::telemetry_control::v1::Device::MergeFrom(
        from._internal_device());
  }
  if (from._internal_replace_device_id() != 0) {
    _this->_internal_set_replace_device_id(from._internal_replace_device_id());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceReplaceRequest::CopyFrom(const PostDeviceReplaceRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceReplaceRequest::IsInitialized() const {
  return true;
}

void PostDeviceReplaceRequest::InternalSwap(PostDeviceReplaceRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PostDeviceReplaceRequest, _impl_.replace_device_id_)
      + sizeof(PostDeviceReplaceRequest::_impl_.replace_device_id_)
      - PROTOBUF_FIELD_OFFSET(PostDeviceReplaceRequest, _impl_.device_)>(
          reinterpret_cast<char*>(&_impl_.device_),
          reinterpret_cast<char*>(&other->_impl_.device_));
}

std::string PostDeviceReplaceRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceReplaceRequest";
}

// ===================================================================

class PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::_Internal {
 public:
};

PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound)
}
PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound(const PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound)
}

inline void PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::~PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound)
  return target;
}

::size_t PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound*>(
      &from));
}

void PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::MergeFrom(const PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound& from) {
  PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::CopyFrom(const PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::IsInitialized() const {
  return true;
}

void PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::InternalSwap(PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound";
}

// ===================================================================

class PostDeviceReplaceResponse_Error_CreateIndicatorsFail::_Internal {
 public:
};

PostDeviceReplaceResponse_Error_CreateIndicatorsFail::PostDeviceReplaceResponse_Error_CreateIndicatorsFail(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail)
}
PostDeviceReplaceResponse_Error_CreateIndicatorsFail::PostDeviceReplaceResponse_Error_CreateIndicatorsFail(const PostDeviceReplaceResponse_Error_CreateIndicatorsFail& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail)
}

inline void PostDeviceReplaceResponse_Error_CreateIndicatorsFail::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostDeviceReplaceResponse_Error_CreateIndicatorsFail::~PostDeviceReplaceResponse_Error_CreateIndicatorsFail() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceReplaceResponse_Error_CreateIndicatorsFail::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostDeviceReplaceResponse_Error_CreateIndicatorsFail::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceReplaceResponse_Error_CreateIndicatorsFail::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceReplaceResponse_Error_CreateIndicatorsFail::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceReplaceResponse_Error_CreateIndicatorsFail::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail)
  return target;
}

::size_t PostDeviceReplaceResponse_Error_CreateIndicatorsFail::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceReplaceResponse_Error_CreateIndicatorsFail::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceReplaceResponse_Error_CreateIndicatorsFail*>(
      &from));
}

void PostDeviceReplaceResponse_Error_CreateIndicatorsFail::MergeFrom(const PostDeviceReplaceResponse_Error_CreateIndicatorsFail& from) {
  PostDeviceReplaceResponse_Error_CreateIndicatorsFail* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceReplaceResponse_Error_CreateIndicatorsFail::CopyFrom(const PostDeviceReplaceResponse_Error_CreateIndicatorsFail& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceReplaceResponse_Error_CreateIndicatorsFail::IsInitialized() const {
  return true;
}

void PostDeviceReplaceResponse_Error_CreateIndicatorsFail::InternalSwap(PostDeviceReplaceResponse_Error_CreateIndicatorsFail* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostDeviceReplaceResponse_Error_CreateIndicatorsFail::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail";
}

// ===================================================================

class PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::_Internal {
 public:
};

PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint)
}
PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint(const PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint)
}

inline void PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::~PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint)
  return target;
}

::size_t PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint*>(
      &from));
}

void PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::MergeFrom(const PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint& from) {
  PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::CopyFrom(const PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::IsInitialized() const {
  return true;
}

void PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::InternalSwap(PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint";
}

// ===================================================================

class PostDeviceReplaceResponse_Error_WrongBuilding::_Internal {
 public:
};

PostDeviceReplaceResponse_Error_WrongBuilding::PostDeviceReplaceResponse_Error_WrongBuilding(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding)
}
PostDeviceReplaceResponse_Error_WrongBuilding::PostDeviceReplaceResponse_Error_WrongBuilding(const PostDeviceReplaceResponse_Error_WrongBuilding& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding)
}

inline void PostDeviceReplaceResponse_Error_WrongBuilding::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostDeviceReplaceResponse_Error_WrongBuilding::~PostDeviceReplaceResponse_Error_WrongBuilding() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceReplaceResponse_Error_WrongBuilding::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostDeviceReplaceResponse_Error_WrongBuilding::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceReplaceResponse_Error_WrongBuilding::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceReplaceResponse_Error_WrongBuilding::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceReplaceResponse_Error_WrongBuilding::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding)
  return target;
}

::size_t PostDeviceReplaceResponse_Error_WrongBuilding::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceReplaceResponse_Error_WrongBuilding::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceReplaceResponse_Error_WrongBuilding*>(
      &from));
}

void PostDeviceReplaceResponse_Error_WrongBuilding::MergeFrom(const PostDeviceReplaceResponse_Error_WrongBuilding& from) {
  PostDeviceReplaceResponse_Error_WrongBuilding* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceReplaceResponse_Error_WrongBuilding::CopyFrom(const PostDeviceReplaceResponse_Error_WrongBuilding& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceReplaceResponse_Error_WrongBuilding::IsInitialized() const {
  return true;
}

void PostDeviceReplaceResponse_Error_WrongBuilding::InternalSwap(PostDeviceReplaceResponse_Error_WrongBuilding* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostDeviceReplaceResponse_Error_WrongBuilding::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding";
}

// ===================================================================

class PostDeviceReplaceResponse_Error_MetricPointNotFound::_Internal {
 public:
};

PostDeviceReplaceResponse_Error_MetricPointNotFound::PostDeviceReplaceResponse_Error_MetricPointNotFound(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound)
}
PostDeviceReplaceResponse_Error_MetricPointNotFound::PostDeviceReplaceResponse_Error_MetricPointNotFound(const PostDeviceReplaceResponse_Error_MetricPointNotFound& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound)
}

inline void PostDeviceReplaceResponse_Error_MetricPointNotFound::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PostDeviceReplaceResponse_Error_MetricPointNotFound::~PostDeviceReplaceResponse_Error_MetricPointNotFound() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceReplaceResponse_Error_MetricPointNotFound::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PostDeviceReplaceResponse_Error_MetricPointNotFound::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceReplaceResponse_Error_MetricPointNotFound::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceReplaceResponse_Error_MetricPointNotFound::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceReplaceResponse_Error_MetricPointNotFound::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound)
  return target;
}

::size_t PostDeviceReplaceResponse_Error_MetricPointNotFound::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceReplaceResponse_Error_MetricPointNotFound::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceReplaceResponse_Error_MetricPointNotFound*>(
      &from));
}

void PostDeviceReplaceResponse_Error_MetricPointNotFound::MergeFrom(const PostDeviceReplaceResponse_Error_MetricPointNotFound& from) {
  PostDeviceReplaceResponse_Error_MetricPointNotFound* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceReplaceResponse_Error_MetricPointNotFound::CopyFrom(const PostDeviceReplaceResponse_Error_MetricPointNotFound& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceReplaceResponse_Error_MetricPointNotFound::IsInitialized() const {
  return true;
}

void PostDeviceReplaceResponse_Error_MetricPointNotFound::InternalSwap(PostDeviceReplaceResponse_Error_MetricPointNotFound* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PostDeviceReplaceResponse_Error_MetricPointNotFound::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound";
}

// ===================================================================

class PostDeviceReplaceResponse_Error::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Device_ValidationError& validation(const PostDeviceReplaceResponse_Error* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound& replace_device_not_found(const PostDeviceReplaceResponse_Error* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_CreateIndicatorsFail& create_indicators_fail(const PostDeviceReplaceResponse_Error* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint& multi_linked_metric_point(const PostDeviceReplaceResponse_Error* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_WrongBuilding& wrong_building(const PostDeviceReplaceResponse_Error* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MetricPointNotFound& metric_point_not_found(const PostDeviceReplaceResponse_Error* msg);
};

const ::keyapis::telemetry_control::v1::Device_ValidationError&
PostDeviceReplaceResponse_Error::_Internal::validation(const PostDeviceReplaceResponse_Error* msg) {
  return *msg->_impl_.reason_.validation_;
}
const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound&
PostDeviceReplaceResponse_Error::_Internal::replace_device_not_found(const PostDeviceReplaceResponse_Error* msg) {
  return *msg->_impl_.reason_.replace_device_not_found_;
}
const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_CreateIndicatorsFail&
PostDeviceReplaceResponse_Error::_Internal::create_indicators_fail(const PostDeviceReplaceResponse_Error* msg) {
  return *msg->_impl_.reason_.create_indicators_fail_;
}
const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint&
PostDeviceReplaceResponse_Error::_Internal::multi_linked_metric_point(const PostDeviceReplaceResponse_Error* msg) {
  return *msg->_impl_.reason_.multi_linked_metric_point_;
}
const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_WrongBuilding&
PostDeviceReplaceResponse_Error::_Internal::wrong_building(const PostDeviceReplaceResponse_Error* msg) {
  return *msg->_impl_.reason_.wrong_building_;
}
const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MetricPointNotFound&
PostDeviceReplaceResponse_Error::_Internal::metric_point_not_found(const PostDeviceReplaceResponse_Error* msg) {
  return *msg->_impl_.reason_.metric_point_not_found_;
}
void PostDeviceReplaceResponse_Error::set_allocated_validation(::keyapis::telemetry_control::v1::Device_ValidationError* validation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (validation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(validation);
    if (message_arena != submessage_arena) {
      validation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, validation, submessage_arena);
    }
    set_has_validation();
    _impl_.reason_.validation_ = validation;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.validation)
}
void PostDeviceReplaceResponse_Error::set_allocated_replace_device_not_found(::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound* replace_device_not_found) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (replace_device_not_found) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(replace_device_not_found);
    if (message_arena != submessage_arena) {
      replace_device_not_found = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, replace_device_not_found, submessage_arena);
    }
    set_has_replace_device_not_found();
    _impl_.reason_.replace_device_not_found_ = replace_device_not_found;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.replace_device_not_found)
}
void PostDeviceReplaceResponse_Error::set_allocated_create_indicators_fail(::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_CreateIndicatorsFail* create_indicators_fail) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (create_indicators_fail) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(create_indicators_fail);
    if (message_arena != submessage_arena) {
      create_indicators_fail = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, create_indicators_fail, submessage_arena);
    }
    set_has_create_indicators_fail();
    _impl_.reason_.create_indicators_fail_ = create_indicators_fail;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.create_indicators_fail)
}
void PostDeviceReplaceResponse_Error::set_allocated_multi_linked_metric_point(::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint* multi_linked_metric_point) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (multi_linked_metric_point) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(multi_linked_metric_point);
    if (message_arena != submessage_arena) {
      multi_linked_metric_point = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, multi_linked_metric_point, submessage_arena);
    }
    set_has_multi_linked_metric_point();
    _impl_.reason_.multi_linked_metric_point_ = multi_linked_metric_point;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.multi_linked_metric_point)
}
void PostDeviceReplaceResponse_Error::set_allocated_wrong_building(::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_WrongBuilding* wrong_building) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (wrong_building) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(wrong_building);
    if (message_arena != submessage_arena) {
      wrong_building = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, wrong_building, submessage_arena);
    }
    set_has_wrong_building();
    _impl_.reason_.wrong_building_ = wrong_building;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.wrong_building)
}
void PostDeviceReplaceResponse_Error::set_allocated_metric_point_not_found(::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MetricPointNotFound* metric_point_not_found) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (metric_point_not_found) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(metric_point_not_found);
    if (message_arena != submessage_arena) {
      metric_point_not_found = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, metric_point_not_found, submessage_arena);
    }
    set_has_metric_point_not_found();
    _impl_.reason_.metric_point_not_found_ = metric_point_not_found;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.metric_point_not_found)
}
PostDeviceReplaceResponse_Error::PostDeviceReplaceResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
}
PostDeviceReplaceResponse_Error::PostDeviceReplaceResponse_Error(const PostDeviceReplaceResponse_Error& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceReplaceResponse_Error* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kValidation: {
      _this->_internal_mutable_validation()->::keyapis::telemetry_control::v1::Device_ValidationError::MergeFrom(
          from._internal_validation());
      break;
    }
    case kReplaceDeviceNotFound: {
      _this->_internal_mutable_replace_device_not_found()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::MergeFrom(
          from._internal_replace_device_not_found());
      break;
    }
    case kCreateIndicatorsFail: {
      _this->_internal_mutable_create_indicators_fail()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_CreateIndicatorsFail::MergeFrom(
          from._internal_create_indicators_fail());
      break;
    }
    case kMultiLinkedMetricPoint: {
      _this->_internal_mutable_multi_linked_metric_point()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::MergeFrom(
          from._internal_multi_linked_metric_point());
      break;
    }
    case kWrongBuilding: {
      _this->_internal_mutable_wrong_building()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_WrongBuilding::MergeFrom(
          from._internal_wrong_building());
      break;
    }
    case kMetricPointNotFound: {
      _this->_internal_mutable_metric_point_not_found()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MetricPointNotFound::MergeFrom(
          from._internal_metric_point_not_found());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
}

inline void PostDeviceReplaceResponse_Error::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

PostDeviceReplaceResponse_Error::~PostDeviceReplaceResponse_Error() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceReplaceResponse_Error::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void PostDeviceReplaceResponse_Error::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceReplaceResponse_Error::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
  switch (reason_case()) {
    case kValidation: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.validation_;
      }
      break;
    }
    case kReplaceDeviceNotFound: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.replace_device_not_found_;
      }
      break;
    }
    case kCreateIndicatorsFail: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.create_indicators_fail_;
      }
      break;
    }
    case kMultiLinkedMetricPoint: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.multi_linked_metric_point_;
      }
      break;
    }
    case kWrongBuilding: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.wrong_building_;
      }
      break;
    }
    case kMetricPointNotFound: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.metric_point_not_found_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void PostDeviceReplaceResponse_Error::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceReplaceResponse_Error::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Device.ValidationError validation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_validation(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound replace_device_not_found = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_replace_device_not_found(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail create_indicators_fail = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_create_indicators_fail(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint multi_linked_metric_point = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_multi_linked_metric_point(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding wrong_building = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_wrong_building(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound metric_point_not_found = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_metric_point_not_found(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceReplaceResponse_Error::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (reason_case()) {
    case kValidation: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::validation(this),
          _Internal::validation(this).GetCachedSize(), target, stream);
      break;
    }
    case kReplaceDeviceNotFound: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::replace_device_not_found(this),
          _Internal::replace_device_not_found(this).GetCachedSize(), target, stream);
      break;
    }
    case kCreateIndicatorsFail: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(3, _Internal::create_indicators_fail(this),
          _Internal::create_indicators_fail(this).GetCachedSize(), target, stream);
      break;
    }
    case kMultiLinkedMetricPoint: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(4, _Internal::multi_linked_metric_point(this),
          _Internal::multi_linked_metric_point(this).GetCachedSize(), target, stream);
      break;
    }
    case kWrongBuilding: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(5, _Internal::wrong_building(this),
          _Internal::wrong_building(this).GetCachedSize(), target, stream);
      break;
    }
    case kMetricPointNotFound: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(6, _Internal::metric_point_not_found(this),
          _Internal::metric_point_not_found(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
  return target;
}

::size_t PostDeviceReplaceResponse_Error::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.Device.ValidationError validation = 1;
    case kValidation: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.validation_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound replace_device_not_found = 2;
    case kReplaceDeviceNotFound: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.replace_device_not_found_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail create_indicators_fail = 3;
    case kCreateIndicatorsFail: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.create_indicators_fail_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint multi_linked_metric_point = 4;
    case kMultiLinkedMetricPoint: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.multi_linked_metric_point_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding wrong_building = 5;
    case kWrongBuilding: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.wrong_building_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound metric_point_not_found = 6;
    case kMetricPointNotFound: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.metric_point_not_found_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceReplaceResponse_Error::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceReplaceResponse_Error*>(
      &from));
}

void PostDeviceReplaceResponse_Error::MergeFrom(const PostDeviceReplaceResponse_Error& from) {
  PostDeviceReplaceResponse_Error* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kValidation: {
      _this->_internal_mutable_validation()->::keyapis::telemetry_control::v1::Device_ValidationError::MergeFrom(
          from._internal_validation());
      break;
    }
    case kReplaceDeviceNotFound: {
      _this->_internal_mutable_replace_device_not_found()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound::MergeFrom(
          from._internal_replace_device_not_found());
      break;
    }
    case kCreateIndicatorsFail: {
      _this->_internal_mutable_create_indicators_fail()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_CreateIndicatorsFail::MergeFrom(
          from._internal_create_indicators_fail());
      break;
    }
    case kMultiLinkedMetricPoint: {
      _this->_internal_mutable_multi_linked_metric_point()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint::MergeFrom(
          from._internal_multi_linked_metric_point());
      break;
    }
    case kWrongBuilding: {
      _this->_internal_mutable_wrong_building()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_WrongBuilding::MergeFrom(
          from._internal_wrong_building());
      break;
    }
    case kMetricPointNotFound: {
      _this->_internal_mutable_metric_point_not_found()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MetricPointNotFound::MergeFrom(
          from._internal_metric_point_not_found());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceReplaceResponse_Error::CopyFrom(const PostDeviceReplaceResponse_Error& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceReplaceResponse_Error::IsInitialized() const {
  return true;
}

void PostDeviceReplaceResponse_Error::InternalSwap(PostDeviceReplaceResponse_Error* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceReplaceResponse_Error::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error";
}

// ===================================================================

class PostDeviceReplaceResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceReplaceResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Device& data(const PostDeviceReplaceResponse* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error& error(const PostDeviceReplaceResponse* msg);
};

const ::keyapis::telemetry_control::v1::Device&
PostDeviceReplaceResponse::_Internal::data(const PostDeviceReplaceResponse* msg) {
  return *msg->_impl_.type_.data_;
}
const ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error&
PostDeviceReplaceResponse::_Internal::error(const PostDeviceReplaceResponse* msg) {
  return *msg->_impl_.type_.error_;
}
void PostDeviceReplaceResponse::set_allocated_data(::keyapis::telemetry_control::v1::Device* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.data)
}
void PostDeviceReplaceResponse::set_allocated_error(::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error* error) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (error) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(error);
    if (message_arena != submessage_arena) {
      error = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, error, submessage_arena);
    }
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceReplaceResponse.error)
}
PostDeviceReplaceResponse::PostDeviceReplaceResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
}
PostDeviceReplaceResponse::PostDeviceReplaceResponse(const PostDeviceReplaceResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceReplaceResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Device::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
}

inline void PostDeviceReplaceResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

PostDeviceReplaceResponse::~PostDeviceReplaceResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceReplaceResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void PostDeviceReplaceResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceReplaceResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case kError: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.error_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void PostDeviceReplaceResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceReplaceResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Device data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error error = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_error(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceReplaceResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (type_case()) {
    case kData: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::data(this),
          _Internal::data(this).GetCachedSize(), target, stream);
      break;
    }
    case kError: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::error(this),
          _Internal::error(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
  return target;
}

::size_t PostDeviceReplaceResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.Device data = 1;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error error = 2;
    case kError: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.error_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceReplaceResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceReplaceResponse*>(
      &from));
}

void PostDeviceReplaceResponse::MergeFrom(const PostDeviceReplaceResponse& from) {
  PostDeviceReplaceResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Device::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceReplaceResponse::CopyFrom(const PostDeviceReplaceResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceReplaceResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceReplaceResponse::IsInitialized() const {
  return true;
}

void PostDeviceReplaceResponse::InternalSwap(PostDeviceReplaceResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceReplaceResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceReplaceResponse";
}

// ===================================================================

class PostDeviceFullDuplexResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::PostDeviceResponse& post_device(const PostDeviceFullDuplexResponse* msg);
};

const ::keyapis::telemetry_control::v1::PostDeviceResponse&
PostDeviceFullDuplexResponse::_Internal::post_device(const PostDeviceFullDuplexResponse* msg) {
  return *msg->_impl_.event_.post_device_;
}
void PostDeviceFullDuplexResponse::set_allocated_post_device(::keyapis::telemetry_control::v1::PostDeviceResponse* post_device) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_event();
  if (post_device) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(post_device);
    if (message_arena != submessage_arena) {
      post_device = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, post_device, submessage_arena);
    }
    set_has_post_device();
    _impl_.event_.post_device_ = post_device;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse.post_device)
}
PostDeviceFullDuplexResponse::PostDeviceFullDuplexResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
}
PostDeviceFullDuplexResponse::PostDeviceFullDuplexResponse(const PostDeviceFullDuplexResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceFullDuplexResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.request_id_) {}

    , decltype(_impl_.event_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.request_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.request_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_request_id().empty()) {
    _this->_impl_.request_id_.Set(from._internal_request_id(), _this->GetArenaForAllocation());
  }
  clear_has_event();
  switch (from.event_case()) {
    case kPostDevice: {
      _this->_internal_mutable_post_device()->::keyapis::telemetry_control::v1::PostDeviceResponse::MergeFrom(
          from._internal_post_device());
      break;
    }
    case EVENT_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
}

inline void PostDeviceFullDuplexResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.request_id_) {}

    , decltype(_impl_.event_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  _impl_.request_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.request_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  clear_has_event();
}

PostDeviceFullDuplexResponse::~PostDeviceFullDuplexResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceFullDuplexResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.request_id_.Destroy();
  if (has_event()) {
    clear_event();
  }
}

void PostDeviceFullDuplexResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceFullDuplexResponse::clear_event() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
  switch (event_case()) {
    case kPostDevice: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.event_.post_device_;
      }
      break;
    }
    case EVENT_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = EVENT_NOT_SET;
}


void PostDeviceFullDuplexResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.request_id_.ClearToEmpty();
  clear_event();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceFullDuplexResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_request_id();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceResponse post_device = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_post_device(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceFullDuplexResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_request_id().empty()) {
    const std::string& _s = this->_internal_request_id();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse.request_id");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // .keyapis.telemetry_control.v1.PostDeviceResponse post_device = 2;
  if (event_case() == kPostDevice) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::post_device(this),
        _Internal::post_device(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
  return target;
}

::size_t PostDeviceFullDuplexResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string request_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_request_id().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_request_id());
  }

  switch (event_case()) {
    // .keyapis.telemetry_control.v1.PostDeviceResponse post_device = 2;
    case kPostDevice: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.event_.post_device_);
      break;
    }
    case EVENT_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceFullDuplexResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceFullDuplexResponse*>(
      &from));
}

void PostDeviceFullDuplexResponse::MergeFrom(const PostDeviceFullDuplexResponse& from) {
  PostDeviceFullDuplexResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_request_id().empty()) {
    _this->_internal_set_request_id(from._internal_request_id());
  }
  switch (from.event_case()) {
    case kPostDevice: {
      _this->_internal_mutable_post_device()->::keyapis::telemetry_control::v1::PostDeviceResponse::MergeFrom(
          from._internal_post_device());
      break;
    }
    case EVENT_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceFullDuplexResponse::CopyFrom(const PostDeviceFullDuplexResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceFullDuplexResponse::IsInitialized() const {
  return true;
}

void PostDeviceFullDuplexResponse::InternalSwap(PostDeviceFullDuplexResponse* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.request_id_, lhs_arena,
                                       &other->_impl_.request_id_, rhs_arena);
  swap(_impl_.event_, other->_impl_.event_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceFullDuplexResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse";
}

// ===================================================================

class PostDeviceResponse_Error::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceResponse_Error, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Device_ValidationError& validation(const PostDeviceResponse_Error* msg);
};

const ::keyapis::telemetry_control::v1::Device_ValidationError&
PostDeviceResponse_Error::_Internal::validation(const PostDeviceResponse_Error* msg) {
  return *msg->_impl_.reason_.validation_;
}
void PostDeviceResponse_Error::set_allocated_validation(::keyapis::telemetry_control::v1::Device_ValidationError* validation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (validation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(validation);
    if (message_arena != submessage_arena) {
      validation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, validation, submessage_arena);
    }
    set_has_validation();
    _impl_.reason_.validation_ = validation;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceResponse.Error.validation)
}
PostDeviceResponse_Error::PostDeviceResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
}
PostDeviceResponse_Error::PostDeviceResponse_Error(const PostDeviceResponse_Error& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceResponse_Error* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kValidation: {
      _this->_internal_mutable_validation()->::keyapis::telemetry_control::v1::Device_ValidationError::MergeFrom(
          from._internal_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
}

inline void PostDeviceResponse_Error::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

PostDeviceResponse_Error::~PostDeviceResponse_Error() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceResponse_Error::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void PostDeviceResponse_Error::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceResponse_Error::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
  switch (reason_case()) {
    case kValidation: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.validation_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void PostDeviceResponse_Error::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceResponse_Error::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Device.ValidationError validation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_validation(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceResponse_Error::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.Device.ValidationError validation = 1;
  if (reason_case() == kValidation) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::validation(this),
        _Internal::validation(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
  return target;
}

::size_t PostDeviceResponse_Error::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.Device.ValidationError validation = 1;
    case kValidation: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.validation_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceResponse_Error::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceResponse_Error*>(
      &from));
}

void PostDeviceResponse_Error::MergeFrom(const PostDeviceResponse_Error& from) {
  PostDeviceResponse_Error* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kValidation: {
      _this->_internal_mutable_validation()->::keyapis::telemetry_control::v1::Device_ValidationError::MergeFrom(
          from._internal_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceResponse_Error::CopyFrom(const PostDeviceResponse_Error& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceResponse.Error)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceResponse_Error::IsInitialized() const {
  return true;
}

void PostDeviceResponse_Error::InternalSwap(PostDeviceResponse_Error* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceResponse_Error::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceResponse.Error";
}

// ===================================================================

class PostDeviceResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::PostDeviceResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Device& data(const PostDeviceResponse* msg);
  static const ::keyapis::telemetry_control::v1::PostDeviceResponse_Error& error(const PostDeviceResponse* msg);
};

const ::keyapis::telemetry_control::v1::Device&
PostDeviceResponse::_Internal::data(const PostDeviceResponse* msg) {
  return *msg->_impl_.type_.data_;
}
const ::keyapis::telemetry_control::v1::PostDeviceResponse_Error&
PostDeviceResponse::_Internal::error(const PostDeviceResponse* msg) {
  return *msg->_impl_.type_.error_;
}
void PostDeviceResponse::set_allocated_data(::keyapis::telemetry_control::v1::Device* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceResponse.data)
}
void PostDeviceResponse::set_allocated_error(::keyapis::telemetry_control::v1::PostDeviceResponse_Error* error) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (error) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(error);
    if (message_arena != submessage_arena) {
      error = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, error, submessage_arena);
    }
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.PostDeviceResponse.error)
}
PostDeviceResponse::PostDeviceResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PostDeviceResponse)
}
PostDeviceResponse::PostDeviceResponse(const PostDeviceResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PostDeviceResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Device::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::PostDeviceResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PostDeviceResponse)
}

inline void PostDeviceResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

PostDeviceResponse::~PostDeviceResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PostDeviceResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PostDeviceResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void PostDeviceResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PostDeviceResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.PostDeviceResponse)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case kError: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.error_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void PostDeviceResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PostDeviceResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* PostDeviceResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Device data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.PostDeviceResponse.Error error = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_error(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PostDeviceResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PostDeviceResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (type_case()) {
    case kData: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::data(this),
          _Internal::data(this).GetCachedSize(), target, stream);
      break;
    }
    case kError: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::error(this),
          _Internal::error(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PostDeviceResponse)
  return target;
}

::size_t PostDeviceResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PostDeviceResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.Device data = 1;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    // .keyapis.telemetry_control.v1.PostDeviceResponse.Error error = 2;
    case kError: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.error_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PostDeviceResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PostDeviceResponse*>(
      &from));
}

void PostDeviceResponse::MergeFrom(const PostDeviceResponse& from) {
  PostDeviceResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PostDeviceResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Device::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::PostDeviceResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PostDeviceResponse::CopyFrom(const PostDeviceResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PostDeviceResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PostDeviceResponse::IsInitialized() const {
  return true;
}

void PostDeviceResponse::InternalSwap(PostDeviceResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string PostDeviceResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PostDeviceResponse";
}

// ===================================================================

class Indicator_ValidationError::_Internal {
 public:
};

Indicator_ValidationError::Indicator_ValidationError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.Indicator.ValidationError)
}
Indicator_ValidationError::Indicator_ValidationError(const Indicator_ValidationError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  Indicator_ValidationError* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.path_) {}

    , decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.path_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.path_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_path().empty()) {
    _this->_impl_.path_.Set(from._internal_path(), _this->GetArenaForAllocation());
  }
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_message().empty()) {
    _this->_impl_.message_.Set(from._internal_message(), _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.Indicator.ValidationError)
}

inline void Indicator_ValidationError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.path_) {}

    , decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.path_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.path_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Indicator_ValidationError::~Indicator_ValidationError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.Indicator.ValidationError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Indicator_ValidationError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.path_.Destroy();
  _impl_.message_.Destroy();
}

void Indicator_ValidationError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Indicator_ValidationError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.Indicator.ValidationError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.path_.ClearToEmpty();
  _impl_.message_.ClearToEmpty();
  _internal_metadata_.Clear<std::string>();
}

const char* Indicator_ValidationError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string path = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_path();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // string message = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_message();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* Indicator_ValidationError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.Indicator.ValidationError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string path = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_path().empty()) {
    const std::string& _s = this->_internal_path();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Indicator.ValidationError.path");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // string message = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    const std::string& _s = this->_internal_message();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Indicator.ValidationError.message");
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.Indicator.ValidationError)
  return target;
}

::size_t Indicator_ValidationError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.Indicator.ValidationError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string path = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_path().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_path());
  }

  // string message = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_message());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void Indicator_ValidationError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const Indicator_ValidationError*>(
      &from));
}

void Indicator_ValidationError::MergeFrom(const Indicator_ValidationError& from) {
  Indicator_ValidationError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.Indicator.ValidationError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_path().empty()) {
    _this->_internal_set_path(from._internal_path());
  }
  if (!from._internal_message().empty()) {
    _this->_internal_set_message(from._internal_message());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void Indicator_ValidationError::CopyFrom(const Indicator_ValidationError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.Indicator.ValidationError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Indicator_ValidationError::IsInitialized() const {
  return true;
}

void Indicator_ValidationError::InternalSwap(Indicator_ValidationError* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.path_, lhs_arena,
                                       &other->_impl_.path_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.message_, lhs_arena,
                                       &other->_impl_.message_, rhs_arena);
}

std::string Indicator_ValidationError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.Indicator.ValidationError";
}

// ===================================================================

class Indicator::_Internal {
 public:
  using HasBits = decltype(std::declval<Indicator>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(Indicator, _impl_._has_bits_);
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& created_at(const Indicator* msg);
  static void set_has_created_at(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& changed_at(const Indicator* msg);
  static void set_has_changed_at(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& compatibility_code(const Indicator* msg);
  static void set_has_compatibility_code(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::FloatValue& coefficient(const Indicator* msg);
  static void set_has_coefficient(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::FloatValue& shift(const Indicator* msg);
  static void set_has_shift(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Int32Value& round_decimal_digits(const Indicator* msg);
  static void set_has_round_decimal_digits(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& channel_number(const Indicator* msg);
  static void set_has_channel_number(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Int32Value& channel_order(const Indicator* msg);
  static void set_has_channel_order(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
};

const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Indicator::_Internal::created_at(const Indicator* msg) {
  return *msg->_impl_.created_at_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Indicator::_Internal::changed_at(const Indicator* msg) {
  return *msg->_impl_.changed_at_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Indicator::_Internal::compatibility_code(const Indicator* msg) {
  return *msg->_impl_.compatibility_code_;
}
const ::PROTOBUF_NAMESPACE_ID::FloatValue&
Indicator::_Internal::coefficient(const Indicator* msg) {
  return *msg->_impl_.coefficient_;
}
const ::PROTOBUF_NAMESPACE_ID::FloatValue&
Indicator::_Internal::shift(const Indicator* msg) {
  return *msg->_impl_.shift_;
}
const ::PROTOBUF_NAMESPACE_ID::Int32Value&
Indicator::_Internal::round_decimal_digits(const Indicator* msg) {
  return *msg->_impl_.round_decimal_digits_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Indicator::_Internal::channel_number(const Indicator* msg) {
  return *msg->_impl_.channel_number_;
}
const ::PROTOBUF_NAMESPACE_ID::Int32Value&
Indicator::_Internal::channel_order(const Indicator* msg) {
  return *msg->_impl_.channel_order_;
}
void Indicator::clear_created_at() {
  if (_impl_.created_at_ != nullptr) _impl_.created_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
void Indicator::clear_changed_at() {
  if (_impl_.changed_at_ != nullptr) _impl_.changed_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
void Indicator::clear_compatibility_code() {
  if (_impl_.compatibility_code_ != nullptr) _impl_.compatibility_code_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
void Indicator::clear_coefficient() {
  if (_impl_.coefficient_ != nullptr) _impl_.coefficient_->Clear();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
void Indicator::clear_shift() {
  if (_impl_.shift_ != nullptr) _impl_.shift_->Clear();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
void Indicator::clear_round_decimal_digits() {
  if (_impl_.round_decimal_digits_ != nullptr) _impl_.round_decimal_digits_->Clear();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
void Indicator::clear_channel_number() {
  if (_impl_.channel_number_ != nullptr) _impl_.channel_number_->Clear();
  _impl_._has_bits_[0] &= ~0x00000040u;
}
void Indicator::clear_channel_order() {
  if (_impl_.channel_order_ != nullptr) _impl_.channel_order_->Clear();
  _impl_._has_bits_[0] &= ~0x00000080u;
}
Indicator::Indicator(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.Indicator)
}
Indicator::Indicator(const Indicator& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  Indicator* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.title_) {}

    , decltype(_impl_.created_at_){nullptr}
    , decltype(_impl_.changed_at_){nullptr}
    , decltype(_impl_.compatibility_code_){nullptr}
    , decltype(_impl_.coefficient_){nullptr}
    , decltype(_impl_.shift_){nullptr}
    , decltype(_impl_.round_decimal_digits_){nullptr}
    , decltype(_impl_.channel_number_){nullptr}
    , decltype(_impl_.channel_order_){nullptr}
    , decltype(_impl_.id_) {}

    , decltype(_impl_.device_id_) {}

    , decltype(_impl_.unit_type_) {}

    , decltype(_impl_.sign_type_) {}

    , decltype(_impl_.is_individual_) {}

    , decltype(_impl_.archive_type_) {}

    , decltype(_impl_.presentation_unit_type_) {}

    , decltype(_impl_.metric_expected_freq_) {}

    , decltype(_impl_.vendor_type_) {}
  };

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.title_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.title_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_title().empty()) {
    _this->_impl_.title_.Set(from._internal_title(), _this->GetArenaForAllocation());
  }
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.created_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.created_at_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000002u) != 0) {
    _this->_impl_.changed_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.changed_at_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000004u) != 0) {
    _this->_impl_.compatibility_code_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.compatibility_code_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000008u) != 0) {
    _this->_impl_.coefficient_ = new ::PROTOBUF_NAMESPACE_ID::FloatValue(*from._impl_.coefficient_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000010u) != 0) {
    _this->_impl_.shift_ = new ::PROTOBUF_NAMESPACE_ID::FloatValue(*from._impl_.shift_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000020u) != 0) {
    _this->_impl_.round_decimal_digits_ = new ::PROTOBUF_NAMESPACE_ID::Int32Value(*from._impl_.round_decimal_digits_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000040u) != 0) {
    _this->_impl_.channel_number_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.channel_number_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000080u) != 0) {
    _this->_impl_.channel_order_ = new ::PROTOBUF_NAMESPACE_ID::Int32Value(*from._impl_.channel_order_);
  }
  ::memcpy(&_impl_.id_, &from._impl_.id_,
    static_cast<::size_t>(reinterpret_cast<char*>(&_impl_.vendor_type_) -
    reinterpret_cast<char*>(&_impl_.id_)) + sizeof(_impl_.vendor_type_));
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.Indicator)
}

inline void Indicator::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.title_) {}

    , decltype(_impl_.created_at_){nullptr}
    , decltype(_impl_.changed_at_){nullptr}
    , decltype(_impl_.compatibility_code_){nullptr}
    , decltype(_impl_.coefficient_){nullptr}
    , decltype(_impl_.shift_){nullptr}
    , decltype(_impl_.round_decimal_digits_){nullptr}
    , decltype(_impl_.channel_number_){nullptr}
    , decltype(_impl_.channel_order_){nullptr}
    , decltype(_impl_.id_) { 0 }

    , decltype(_impl_.device_id_) { 0 }

    , decltype(_impl_.unit_type_) { 0 }

    , decltype(_impl_.sign_type_) { 0 }

    , decltype(_impl_.is_individual_) { false }

    , decltype(_impl_.archive_type_) { 0 }

    , decltype(_impl_.presentation_unit_type_) { 0 }

    , decltype(_impl_.metric_expected_freq_) { 0 }

    , decltype(_impl_.vendor_type_) { 0 }

  };
  _impl_.title_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.title_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Indicator::~Indicator() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.Indicator)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Indicator::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.title_.Destroy();
  if (this != internal_default_instance()) delete _impl_.created_at_;
  if (this != internal_default_instance()) delete _impl_.changed_at_;
  if (this != internal_default_instance()) delete _impl_.compatibility_code_;
  if (this != internal_default_instance()) delete _impl_.coefficient_;
  if (this != internal_default_instance()) delete _impl_.shift_;
  if (this != internal_default_instance()) delete _impl_.round_decimal_digits_;
  if (this != internal_default_instance()) delete _impl_.channel_number_;
  if (this != internal_default_instance()) delete _impl_.channel_order_;
}

void Indicator::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Indicator::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.Indicator)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.title_.ClearToEmpty();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(_impl_.created_at_ != nullptr);
      _impl_.created_at_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(_impl_.changed_at_ != nullptr);
      _impl_.changed_at_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      ABSL_DCHECK(_impl_.compatibility_code_ != nullptr);
      _impl_.compatibility_code_->Clear();
    }
    if (cached_has_bits & 0x00000008u) {
      ABSL_DCHECK(_impl_.coefficient_ != nullptr);
      _impl_.coefficient_->Clear();
    }
    if (cached_has_bits & 0x00000010u) {
      ABSL_DCHECK(_impl_.shift_ != nullptr);
      _impl_.shift_->Clear();
    }
    if (cached_has_bits & 0x00000020u) {
      ABSL_DCHECK(_impl_.round_decimal_digits_ != nullptr);
      _impl_.round_decimal_digits_->Clear();
    }
    if (cached_has_bits & 0x00000040u) {
      ABSL_DCHECK(_impl_.channel_number_ != nullptr);
      _impl_.channel_number_->Clear();
    }
    if (cached_has_bits & 0x00000080u) {
      ABSL_DCHECK(_impl_.channel_order_ != nullptr);
      _impl_.channel_order_->Clear();
    }
  }
  ::memset(&_impl_.id_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.vendor_type_) -
      reinterpret_cast<char*>(&_impl_.id_)) + sizeof(_impl_.vendor_type_));
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* Indicator::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _impl_.id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          _impl_.device_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // string title = 3 [(.google.api.field_behavior) = REQUIRED];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_title();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Indicator.UnitType unit_type = 4 [(.google.api.field_behavior) = REQUIRED];
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 32)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_unit_type(static_cast<::keyapis::telemetry_control::v1::Indicator_UnitType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Indicator.SignType sign_type = 5 [(.google.api.field_behavior) = REQUIRED];
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 40)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_sign_type(static_cast<::keyapis::telemetry_control::v1::Indicator_SignType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_created_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_changed_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // bool is_individual = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 64)) {
          _impl_.is_individual_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue compatibility_code = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_compatibility_code(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Indicator.ArchiveType archive_type = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 80)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_archive_type(static_cast<::keyapis::telemetry_control::v1::Indicator_ArchiveType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Indicator.UnitType presentation_unit_type = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 88)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_presentation_unit_type(static_cast<::keyapis::telemetry_control::v1::Indicator_UnitType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.FloatValue coefficient = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_coefficient(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.FloatValue shift = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 106)) {
          ptr = ctx->ParseMessage(_internal_mutable_shift(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Int32Value round_decimal_digits = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_round_decimal_digits(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 metric_expected_freq = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 120)) {
          _impl_.metric_expected_freq_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue channel_number = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 130)) {
          ptr = ctx->ParseMessage(_internal_mutable_channel_number(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Int32Value channel_order = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 138)) {
          ptr = ctx->ParseMessage(_internal_mutable_channel_order(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Indicator.VendorType vendor_type = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 144)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_vendor_type(static_cast<::keyapis::telemetry_control::v1::Indicator_VendorType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* Indicator::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.Indicator)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 id = 1;
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_id(), target);
  }

  // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        2, this->_internal_device_id(), target);
  }

  // string title = 3 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_title().empty()) {
    const std::string& _s = this->_internal_title();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Indicator.title");
    target = stream->WriteStringMaybeAliased(3, _s, target);
  }

  // .keyapis.telemetry_control.v1.Indicator.UnitType unit_type = 4 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_unit_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        4, this->_internal_unit_type(), target);
  }

  // .keyapis.telemetry_control.v1.Indicator.SignType sign_type = 5 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_sign_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        5, this->_internal_sign_type(), target);
  }

  cached_has_bits = _impl_._has_bits_[0];
  // .google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::created_at(this),
        _Internal::created_at(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(7, _Internal::changed_at(this),
        _Internal::changed_at(this).GetCachedSize(), target, stream);
  }

  // bool is_individual = 8;
  if (this->_internal_is_individual() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(
        8, this->_internal_is_individual(), target);
  }

  // .google.protobuf.StringValue compatibility_code = 9;
  if (cached_has_bits & 0x00000004u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(9, _Internal::compatibility_code(this),
        _Internal::compatibility_code(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.Indicator.ArchiveType archive_type = 10;
  if (this->_internal_archive_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        10, this->_internal_archive_type(), target);
  }

  // .keyapis.telemetry_control.v1.Indicator.UnitType presentation_unit_type = 11;
  if (this->_internal_presentation_unit_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        11, this->_internal_presentation_unit_type(), target);
  }

  // .google.protobuf.FloatValue coefficient = 12;
  if (cached_has_bits & 0x00000008u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(12, _Internal::coefficient(this),
        _Internal::coefficient(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.FloatValue shift = 13;
  if (cached_has_bits & 0x00000010u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(13, _Internal::shift(this),
        _Internal::shift(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Int32Value round_decimal_digits = 14;
  if (cached_has_bits & 0x00000020u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(14, _Internal::round_decimal_digits(this),
        _Internal::round_decimal_digits(this).GetCachedSize(), target, stream);
  }

  // int32 metric_expected_freq = 15;
  if (this->_internal_metric_expected_freq() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        15, this->_internal_metric_expected_freq(), target);
  }

  // .google.protobuf.StringValue channel_number = 16;
  if (cached_has_bits & 0x00000040u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(16, _Internal::channel_number(this),
        _Internal::channel_number(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Int32Value channel_order = 17;
  if (cached_has_bits & 0x00000080u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(17, _Internal::channel_order(this),
        _Internal::channel_order(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.Indicator.VendorType vendor_type = 18;
  if (this->_internal_vendor_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        18, this->_internal_vendor_type(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.Indicator)
  return target;
}

::size_t Indicator::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.Indicator)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string title = 3 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_title().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_title());
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // .google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.created_at_);
    }

    // .google.protobuf.Timestamp changed_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.changed_at_);
    }

    // .google.protobuf.StringValue compatibility_code = 9;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.compatibility_code_);
    }

    // .google.protobuf.FloatValue coefficient = 12;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.coefficient_);
    }

    // .google.protobuf.FloatValue shift = 13;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.shift_);
    }

    // .google.protobuf.Int32Value round_decimal_digits = 14;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.round_decimal_digits_);
    }

    // .google.protobuf.StringValue channel_number = 16;
    if (cached_has_bits & 0x00000040u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.channel_number_);
    }

    // .google.protobuf.Int32Value channel_order = 17;
    if (cached_has_bits & 0x00000080u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.channel_order_);
    }

  }
  // int32 id = 1;
  if (this->_internal_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_id());
  }

  // int32 device_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_device_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_device_id());
  }

  // .keyapis.telemetry_control.v1.Indicator.UnitType unit_type = 4 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_unit_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_unit_type());
  }

  // .keyapis.telemetry_control.v1.Indicator.SignType sign_type = 5 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_sign_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_sign_type());
  }

  // bool is_individual = 8;
  if (this->_internal_is_individual() != 0) {
    total_size += 2;
  }

  // .keyapis.telemetry_control.v1.Indicator.ArchiveType archive_type = 10;
  if (this->_internal_archive_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_archive_type());
  }

  // .keyapis.telemetry_control.v1.Indicator.UnitType presentation_unit_type = 11;
  if (this->_internal_presentation_unit_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_presentation_unit_type());
  }

  // int32 metric_expected_freq = 15;
  if (this->_internal_metric_expected_freq() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_metric_expected_freq());
  }

  // .keyapis.telemetry_control.v1.Indicator.VendorType vendor_type = 18;
  if (this->_internal_vendor_type() != 0) {
    total_size += 2 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_vendor_type());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void Indicator::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const Indicator*>(
      &from));
}

void Indicator::MergeFrom(const Indicator& from) {
  Indicator* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.Indicator)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_title().empty()) {
    _this->_internal_set_title(from._internal_title());
  }
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_created_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_created_at());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_changed_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_changed_at());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_mutable_compatibility_code()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_compatibility_code());
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_internal_mutable_coefficient()->::PROTOBUF_NAMESPACE_ID::FloatValue::MergeFrom(
          from._internal_coefficient());
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_internal_mutable_shift()->::PROTOBUF_NAMESPACE_ID::FloatValue::MergeFrom(
          from._internal_shift());
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_internal_mutable_round_decimal_digits()->::PROTOBUF_NAMESPACE_ID::Int32Value::MergeFrom(
          from._internal_round_decimal_digits());
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_internal_mutable_channel_number()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_channel_number());
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_internal_mutable_channel_order()->::PROTOBUF_NAMESPACE_ID::Int32Value::MergeFrom(
          from._internal_channel_order());
    }
  }
  if (from._internal_id() != 0) {
    _this->_internal_set_id(from._internal_id());
  }
  if (from._internal_device_id() != 0) {
    _this->_internal_set_device_id(from._internal_device_id());
  }
  if (from._internal_unit_type() != 0) {
    _this->_internal_set_unit_type(from._internal_unit_type());
  }
  if (from._internal_sign_type() != 0) {
    _this->_internal_set_sign_type(from._internal_sign_type());
  }
  if (from._internal_is_individual() != 0) {
    _this->_internal_set_is_individual(from._internal_is_individual());
  }
  if (from._internal_archive_type() != 0) {
    _this->_internal_set_archive_type(from._internal_archive_type());
  }
  if (from._internal_presentation_unit_type() != 0) {
    _this->_internal_set_presentation_unit_type(from._internal_presentation_unit_type());
  }
  if (from._internal_metric_expected_freq() != 0) {
    _this->_internal_set_metric_expected_freq(from._internal_metric_expected_freq());
  }
  if (from._internal_vendor_type() != 0) {
    _this->_internal_set_vendor_type(from._internal_vendor_type());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void Indicator::CopyFrom(const Indicator& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.Indicator)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Indicator::IsInitialized() const {
  return true;
}

void Indicator::InternalSwap(Indicator* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.title_, lhs_arena,
                                       &other->_impl_.title_, rhs_arena);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Indicator, _impl_.vendor_type_)
      + sizeof(Indicator::_impl_.vendor_type_)
      - PROTOBUF_FIELD_OFFSET(Indicator, _impl_.created_at_)>(
          reinterpret_cast<char*>(&_impl_.created_at_),
          reinterpret_cast<char*>(&other->_impl_.created_at_));
}

std::string Indicator::GetTypeName() const {
  return "keyapis.telemetry_control.v1.Indicator";
}

// ===================================================================

class Device_ValidationError::_Internal {
 public:
};

Device_ValidationError::Device_ValidationError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.Device.ValidationError)
}
Device_ValidationError::Device_ValidationError(const Device_ValidationError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  Device_ValidationError* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.path_) {}

    , decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.path_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.path_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_path().empty()) {
    _this->_impl_.path_.Set(from._internal_path(), _this->GetArenaForAllocation());
  }
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_message().empty()) {
    _this->_impl_.message_.Set(from._internal_message(), _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.Device.ValidationError)
}

inline void Device_ValidationError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.path_) {}

    , decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.path_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.path_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Device_ValidationError::~Device_ValidationError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.Device.ValidationError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Device_ValidationError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.path_.Destroy();
  _impl_.message_.Destroy();
}

void Device_ValidationError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Device_ValidationError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.Device.ValidationError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.path_.ClearToEmpty();
  _impl_.message_.ClearToEmpty();
  _internal_metadata_.Clear<std::string>();
}

const char* Device_ValidationError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string path = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_path();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // string message = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_message();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* Device_ValidationError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.Device.ValidationError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string path = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_path().empty()) {
    const std::string& _s = this->_internal_path();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Device.ValidationError.path");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // string message = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    const std::string& _s = this->_internal_message();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Device.ValidationError.message");
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.Device.ValidationError)
  return target;
}

::size_t Device_ValidationError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.Device.ValidationError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string path = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_path().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_path());
  }

  // string message = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_message());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void Device_ValidationError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const Device_ValidationError*>(
      &from));
}

void Device_ValidationError::MergeFrom(const Device_ValidationError& from) {
  Device_ValidationError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.Device.ValidationError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_path().empty()) {
    _this->_internal_set_path(from._internal_path());
  }
  if (!from._internal_message().empty()) {
    _this->_internal_set_message(from._internal_message());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void Device_ValidationError::CopyFrom(const Device_ValidationError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.Device.ValidationError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Device_ValidationError::IsInitialized() const {
  return true;
}

void Device_ValidationError::InternalSwap(Device_ValidationError* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.path_, lhs_arena,
                                       &other->_impl_.path_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.message_, lhs_arena,
                                       &other->_impl_.message_, rhs_arena);
}

std::string Device_ValidationError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.Device.ValidationError";
}

// ===================================================================

class Device_MetricPoint::_Internal {
 public:
  using HasBits = decltype(std::declval<Device_MetricPoint>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(Device_MetricPoint, _impl_._has_bits_);
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& zone_label(const Device_MetricPoint* msg);
  static void set_has_zone_label(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& created_at(const Device_MetricPoint* msg);
  static void set_has_created_at(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& changed_at(const Device_MetricPoint* msg);
  static void set_has_changed_at(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device_MetricPoint::_Internal::zone_label(const Device_MetricPoint* msg) {
  return *msg->_impl_.zone_label_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Device_MetricPoint::_Internal::created_at(const Device_MetricPoint* msg) {
  return *msg->_impl_.created_at_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Device_MetricPoint::_Internal::changed_at(const Device_MetricPoint* msg) {
  return *msg->_impl_.changed_at_;
}
void Device_MetricPoint::clear_zone_label() {
  if (_impl_.zone_label_ != nullptr) _impl_.zone_label_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
void Device_MetricPoint::clear_created_at() {
  if (_impl_.created_at_ != nullptr) _impl_.created_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
void Device_MetricPoint::clear_changed_at() {
  if (_impl_.changed_at_ != nullptr) _impl_.changed_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
Device_MetricPoint::Device_MetricPoint(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.Device.MetricPoint)
}
Device_MetricPoint::Device_MetricPoint(const Device_MetricPoint& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  Device_MetricPoint* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.id_) {}

    , decltype(_impl_.room_number_) {}

    , decltype(_impl_.room_label_) {}

    , decltype(_impl_.zone_label_){nullptr}
    , decltype(_impl_.created_at_){nullptr}
    , decltype(_impl_.changed_at_){nullptr}
    , decltype(_impl_.metric_type_) {}

    , decltype(_impl_.status_type_) {}

    , decltype(_impl_.accounting_type_) {}

    , decltype(_impl_.primary_current_type_) {}

    , decltype(_impl_.secondary_current_type_) {}

    , decltype(_impl_.building_id_) {}

    , decltype(_impl_.building_level_) {}

    , decltype(_impl_.building_section_) {}
  };

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_id().empty()) {
    _this->_impl_.id_.Set(from._internal_id(), _this->GetArenaForAllocation());
  }
  _impl_.room_number_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.room_number_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_room_number().empty()) {
    _this->_impl_.room_number_.Set(from._internal_room_number(), _this->GetArenaForAllocation());
  }
  _impl_.room_label_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.room_label_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_room_label().empty()) {
    _this->_impl_.room_label_.Set(from._internal_room_label(), _this->GetArenaForAllocation());
  }
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.zone_label_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.zone_label_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000002u) != 0) {
    _this->_impl_.created_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.created_at_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000004u) != 0) {
    _this->_impl_.changed_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.changed_at_);
  }
  ::memcpy(&_impl_.metric_type_, &from._impl_.metric_type_,
    static_cast<::size_t>(reinterpret_cast<char*>(&_impl_.building_section_) -
    reinterpret_cast<char*>(&_impl_.metric_type_)) + sizeof(_impl_.building_section_));
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.Device.MetricPoint)
}

inline void Device_MetricPoint::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.id_) {}

    , decltype(_impl_.room_number_) {}

    , decltype(_impl_.room_label_) {}

    , decltype(_impl_.zone_label_){nullptr}
    , decltype(_impl_.created_at_){nullptr}
    , decltype(_impl_.changed_at_){nullptr}
    , decltype(_impl_.metric_type_) { 0 }

    , decltype(_impl_.status_type_) { 0 }

    , decltype(_impl_.accounting_type_) { 0 }

    , decltype(_impl_.primary_current_type_) { 0 }

    , decltype(_impl_.secondary_current_type_) { 0 }

    , decltype(_impl_.building_id_) { 0 }

    , decltype(_impl_.building_level_) { 0 }

    , decltype(_impl_.building_section_) { 0 }

  };
  _impl_.id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.room_number_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.room_number_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.room_label_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.room_label_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Device_MetricPoint::~Device_MetricPoint() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.Device.MetricPoint)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Device_MetricPoint::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.id_.Destroy();
  _impl_.room_number_.Destroy();
  _impl_.room_label_.Destroy();
  if (this != internal_default_instance()) delete _impl_.zone_label_;
  if (this != internal_default_instance()) delete _impl_.created_at_;
  if (this != internal_default_instance()) delete _impl_.changed_at_;
}

void Device_MetricPoint::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Device_MetricPoint::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.Device.MetricPoint)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.id_.ClearToEmpty();
  _impl_.room_number_.ClearToEmpty();
  _impl_.room_label_.ClearToEmpty();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(_impl_.zone_label_ != nullptr);
      _impl_.zone_label_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(_impl_.created_at_ != nullptr);
      _impl_.created_at_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      ABSL_DCHECK(_impl_.changed_at_ != nullptr);
      _impl_.changed_at_->Clear();
    }
  }
  ::memset(&_impl_.metric_type_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.building_section_) -
      reinterpret_cast<char*>(&_impl_.metric_type_)) + sizeof(_impl_.building_section_));
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* Device_MetricPoint::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_id();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.MetricPoint.MetricType metric_type = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_metric_type(static_cast<::keyapis::telemetry_control::v1::Device_MetricPoint_MetricType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // string room_number = 3 [(.google.api.field_behavior) = REQUIRED];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_room_number();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // string room_label = 4 [(.google.api.field_behavior) = REQUIRED];
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_room_label();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue zone_label = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_zone_label(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.MetricPoint.StatusType status_type = 6 [(.google.api.field_behavior) = REQUIRED];
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 48)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_status_type(static_cast<::keyapis::telemetry_control::v1::Device_MetricPoint_StatusType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.MetricPoint.AccountingType accounting_type = 7 [(.google.api.field_behavior) = REQUIRED];
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 56)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_accounting_type(static_cast<::keyapis::telemetry_control::v1::Device_MetricPoint_AccountingType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp created_at = 8 [(.google.api.field_behavior) = OUTPUT_ONLY];
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_created_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.MetricPoint.PrimaryCurrentType primary_current_type = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 72)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_primary_current_type(static_cast<::keyapis::telemetry_control::v1::Device_MetricPoint_PrimaryCurrentType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.SecondaryCurrentType secondary_current_type = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 80)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_secondary_current_type(static_cast<::keyapis::telemetry_control::v1::Device_SecondaryCurrentType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 building_id = 11 [(.google.api.field_behavior) = REQUIRED];
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 88)) {
          _impl_.building_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp changed_at = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_changed_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 building_level = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 104)) {
          _impl_.building_level_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 building_section = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 112)) {
          _impl_.building_section_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* Device_MetricPoint::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.Device.MetricPoint)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string id = 1;
  if (!this->_internal_id().empty()) {
    const std::string& _s = this->_internal_id();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Device.MetricPoint.id");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // .keyapis.telemetry_control.v1.Device.MetricPoint.MetricType metric_type = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_metric_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this->_internal_metric_type(), target);
  }

  // string room_number = 3 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_room_number().empty()) {
    const std::string& _s = this->_internal_room_number();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Device.MetricPoint.room_number");
    target = stream->WriteStringMaybeAliased(3, _s, target);
  }

  // string room_label = 4 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_room_label().empty()) {
    const std::string& _s = this->_internal_room_label();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Device.MetricPoint.room_label");
    target = stream->WriteStringMaybeAliased(4, _s, target);
  }

  cached_has_bits = _impl_._has_bits_[0];
  // .google.protobuf.StringValue zone_label = 5;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, _Internal::zone_label(this),
        _Internal::zone_label(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.Device.MetricPoint.StatusType status_type = 6 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_status_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        6, this->_internal_status_type(), target);
  }

  // .keyapis.telemetry_control.v1.Device.MetricPoint.AccountingType accounting_type = 7 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_accounting_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        7, this->_internal_accounting_type(), target);
  }

  // .google.protobuf.Timestamp created_at = 8 [(.google.api.field_behavior) = OUTPUT_ONLY];
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(8, _Internal::created_at(this),
        _Internal::created_at(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.Device.MetricPoint.PrimaryCurrentType primary_current_type = 9;
  if (this->_internal_primary_current_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        9, this->_internal_primary_current_type(), target);
  }

  // .keyapis.telemetry_control.v1.Device.SecondaryCurrentType secondary_current_type = 10;
  if (this->_internal_secondary_current_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        10, this->_internal_secondary_current_type(), target);
  }

  // int32 building_id = 11 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_building_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        11, this->_internal_building_id(), target);
  }

  // .google.protobuf.Timestamp changed_at = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
  if (cached_has_bits & 0x00000004u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(12, _Internal::changed_at(this),
        _Internal::changed_at(this).GetCachedSize(), target, stream);
  }

  // int32 building_level = 13;
  if (this->_internal_building_level() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        13, this->_internal_building_level(), target);
  }

  // int32 building_section = 14;
  if (this->_internal_building_section() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        14, this->_internal_building_section(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.Device.MetricPoint)
  return target;
}

::size_t Device_MetricPoint::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.Device.MetricPoint)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string id = 1;
  if (!this->_internal_id().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_id());
  }

  // string room_number = 3 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_room_number().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_room_number());
  }

  // string room_label = 4 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_room_label().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_room_label());
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // .google.protobuf.StringValue zone_label = 5;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.zone_label_);
    }

    // .google.protobuf.Timestamp created_at = 8 [(.google.api.field_behavior) = OUTPUT_ONLY];
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.created_at_);
    }

    // .google.protobuf.Timestamp changed_at = 12 [(.google.api.field_behavior) = OUTPUT_ONLY];
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.changed_at_);
    }

  }
  // .keyapis.telemetry_control.v1.Device.MetricPoint.MetricType metric_type = 2 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_metric_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_metric_type());
  }

  // .keyapis.telemetry_control.v1.Device.MetricPoint.StatusType status_type = 6 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_status_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_status_type());
  }

  // .keyapis.telemetry_control.v1.Device.MetricPoint.AccountingType accounting_type = 7 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_accounting_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_accounting_type());
  }

  // .keyapis.telemetry_control.v1.Device.MetricPoint.PrimaryCurrentType primary_current_type = 9;
  if (this->_internal_primary_current_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_primary_current_type());
  }

  // .keyapis.telemetry_control.v1.Device.SecondaryCurrentType secondary_current_type = 10;
  if (this->_internal_secondary_current_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_secondary_current_type());
  }

  // int32 building_id = 11 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_building_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_building_id());
  }

  // int32 building_level = 13;
  if (this->_internal_building_level() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_building_level());
  }

  // int32 building_section = 14;
  if (this->_internal_building_section() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_building_section());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void Device_MetricPoint::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const Device_MetricPoint*>(
      &from));
}

void Device_MetricPoint::MergeFrom(const Device_MetricPoint& from) {
  Device_MetricPoint* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.Device.MetricPoint)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_id().empty()) {
    _this->_internal_set_id(from._internal_id());
  }
  if (!from._internal_room_number().empty()) {
    _this->_internal_set_room_number(from._internal_room_number());
  }
  if (!from._internal_room_label().empty()) {
    _this->_internal_set_room_label(from._internal_room_label());
  }
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_zone_label()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_zone_label());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_created_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_created_at());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_mutable_changed_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_changed_at());
    }
  }
  if (from._internal_metric_type() != 0) {
    _this->_internal_set_metric_type(from._internal_metric_type());
  }
  if (from._internal_status_type() != 0) {
    _this->_internal_set_status_type(from._internal_status_type());
  }
  if (from._internal_accounting_type() != 0) {
    _this->_internal_set_accounting_type(from._internal_accounting_type());
  }
  if (from._internal_primary_current_type() != 0) {
    _this->_internal_set_primary_current_type(from._internal_primary_current_type());
  }
  if (from._internal_secondary_current_type() != 0) {
    _this->_internal_set_secondary_current_type(from._internal_secondary_current_type());
  }
  if (from._internal_building_id() != 0) {
    _this->_internal_set_building_id(from._internal_building_id());
  }
  if (from._internal_building_level() != 0) {
    _this->_internal_set_building_level(from._internal_building_level());
  }
  if (from._internal_building_section() != 0) {
    _this->_internal_set_building_section(from._internal_building_section());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void Device_MetricPoint::CopyFrom(const Device_MetricPoint& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.Device.MetricPoint)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Device_MetricPoint::IsInitialized() const {
  return true;
}

void Device_MetricPoint::InternalSwap(Device_MetricPoint* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.id_, lhs_arena,
                                       &other->_impl_.id_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.room_number_, lhs_arena,
                                       &other->_impl_.room_number_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.room_label_, lhs_arena,
                                       &other->_impl_.room_label_, rhs_arena);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Device_MetricPoint, _impl_.building_section_)
      + sizeof(Device_MetricPoint::_impl_.building_section_)
      - PROTOBUF_FIELD_OFFSET(Device_MetricPoint, _impl_.zone_label_)>(
          reinterpret_cast<char*>(&_impl_.zone_label_),
          reinterpret_cast<char*>(&other->_impl_.zone_label_));
}

std::string Device_MetricPoint::GetTypeName() const {
  return "keyapis.telemetry_control.v1.Device.MetricPoint";
}

// ===================================================================

class Device::_Internal {
 public:
  using HasBits = decltype(std::declval<Device>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(Device, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::Device_MetricPoint& metric_point(const Device* msg);
  static void set_has_metric_point(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& created_at(const Device* msg);
  static void set_has_created_at(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& changed_at(const Device* msg);
  static void set_has_changed_at(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& installed_at(const Device* msg);
  static void set_has_installed_at(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& removed_at(const Device* msg);
  static void set_has_removed_at(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& check_at(const Device* msg);
  static void set_has_check_at(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& next_check_at(const Device* msg);
  static void set_has_next_check_at(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& external_id(const Device* msg);
  static void set_has_external_id(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Int32Value& parent_id(const Device* msg);
  static void set_has_parent_id(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& dev_eui(const Device* msg);
  static void set_has_dev_eui(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& mac(const Device* msg);
  static void set_has_mac(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Int32Value& port(const Device* msg);
  static void set_has_port(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& network_address(const Device* msg);
  static void set_has_network_address(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& comm_channel(const Device* msg);
  static void set_has_comm_channel(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& sim_number(const Device* msg);
  static void set_has_sim_number(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& sim_serial(const Device* msg);
  static void set_has_sim_serial(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& ip_address_sim(const Device* msg);
  static void set_has_ip_address_sim(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& placement(const Device* msg);
  static void set_has_placement(HasBits* has_bits) {
    (*has_bits)[0] |= 131072u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& installation_place(const Device* msg);
  static void set_has_installation_place(HasBits* has_bits) {
    (*has_bits)[0] |= 262144u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& appkey(const Device* msg);
  static void set_has_appkey(HasBits* has_bits) {
    (*has_bits)[0] |= 524288u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& appeui(const Device* msg);
  static void set_has_appeui(HasBits* has_bits) {
    (*has_bits)[0] |= 1048576u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& protocol_type_label(const Device* msg);
  static void set_has_protocol_type_label(HasBits* has_bits) {
    (*has_bits)[0] |= 2097152u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Int32Value& channel_number(const Device* msg);
  static void set_has_channel_number(HasBits* has_bits) {
    (*has_bits)[0] |= 4194304u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::StringValue& wire_interface(const Device* msg);
  static void set_has_wire_interface(HasBits* has_bits) {
    (*has_bits)[0] |= 8388608u;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Int32Value& manufacture_year(const Device* msg);
  static void set_has_manufacture_year(HasBits* has_bits) {
    (*has_bits)[0] |= 16777216u;
  }
};

const ::keyapis::telemetry_control::v1::Device_MetricPoint&
Device::_Internal::metric_point(const Device* msg) {
  return *msg->_impl_.metric_point_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Device::_Internal::created_at(const Device* msg) {
  return *msg->_impl_.created_at_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Device::_Internal::changed_at(const Device* msg) {
  return *msg->_impl_.changed_at_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Device::_Internal::installed_at(const Device* msg) {
  return *msg->_impl_.installed_at_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Device::_Internal::removed_at(const Device* msg) {
  return *msg->_impl_.removed_at_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Device::_Internal::check_at(const Device* msg) {
  return *msg->_impl_.check_at_;
}
const ::PROTOBUF_NAMESPACE_ID::Timestamp&
Device::_Internal::next_check_at(const Device* msg) {
  return *msg->_impl_.next_check_at_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::external_id(const Device* msg) {
  return *msg->_impl_.external_id_;
}
const ::PROTOBUF_NAMESPACE_ID::Int32Value&
Device::_Internal::parent_id(const Device* msg) {
  return *msg->_impl_.parent_id_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::dev_eui(const Device* msg) {
  return *msg->_impl_.dev_eui_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::mac(const Device* msg) {
  return *msg->_impl_.mac_;
}
const ::PROTOBUF_NAMESPACE_ID::Int32Value&
Device::_Internal::port(const Device* msg) {
  return *msg->_impl_.port_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::network_address(const Device* msg) {
  return *msg->_impl_.network_address_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::comm_channel(const Device* msg) {
  return *msg->_impl_.comm_channel_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::sim_number(const Device* msg) {
  return *msg->_impl_.sim_number_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::sim_serial(const Device* msg) {
  return *msg->_impl_.sim_serial_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::ip_address_sim(const Device* msg) {
  return *msg->_impl_.ip_address_sim_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::placement(const Device* msg) {
  return *msg->_impl_.placement_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::installation_place(const Device* msg) {
  return *msg->_impl_.installation_place_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::appkey(const Device* msg) {
  return *msg->_impl_.appkey_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::appeui(const Device* msg) {
  return *msg->_impl_.appeui_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::protocol_type_label(const Device* msg) {
  return *msg->_impl_.protocol_type_label_;
}
const ::PROTOBUF_NAMESPACE_ID::Int32Value&
Device::_Internal::channel_number(const Device* msg) {
  return *msg->_impl_.channel_number_;
}
const ::PROTOBUF_NAMESPACE_ID::StringValue&
Device::_Internal::wire_interface(const Device* msg) {
  return *msg->_impl_.wire_interface_;
}
const ::PROTOBUF_NAMESPACE_ID::Int32Value&
Device::_Internal::manufacture_year(const Device* msg) {
  return *msg->_impl_.manufacture_year_;
}
void Device::clear_created_at() {
  if (_impl_.created_at_ != nullptr) _impl_.created_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
void Device::clear_changed_at() {
  if (_impl_.changed_at_ != nullptr) _impl_.changed_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
void Device::clear_installed_at() {
  if (_impl_.installed_at_ != nullptr) _impl_.installed_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
void Device::clear_removed_at() {
  if (_impl_.removed_at_ != nullptr) _impl_.removed_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
void Device::clear_check_at() {
  if (_impl_.check_at_ != nullptr) _impl_.check_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
void Device::clear_next_check_at() {
  if (_impl_.next_check_at_ != nullptr) _impl_.next_check_at_->Clear();
  _impl_._has_bits_[0] &= ~0x00000040u;
}
void Device::clear_external_id() {
  if (_impl_.external_id_ != nullptr) _impl_.external_id_->Clear();
  _impl_._has_bits_[0] &= ~0x00000080u;
}
void Device::clear_parent_id() {
  if (_impl_.parent_id_ != nullptr) _impl_.parent_id_->Clear();
  _impl_._has_bits_[0] &= ~0x00000100u;
}
void Device::clear_dev_eui() {
  if (_impl_.dev_eui_ != nullptr) _impl_.dev_eui_->Clear();
  _impl_._has_bits_[0] &= ~0x00000200u;
}
void Device::clear_mac() {
  if (_impl_.mac_ != nullptr) _impl_.mac_->Clear();
  _impl_._has_bits_[0] &= ~0x00000400u;
}
void Device::clear_port() {
  if (_impl_.port_ != nullptr) _impl_.port_->Clear();
  _impl_._has_bits_[0] &= ~0x00000800u;
}
void Device::clear_network_address() {
  if (_impl_.network_address_ != nullptr) _impl_.network_address_->Clear();
  _impl_._has_bits_[0] &= ~0x00001000u;
}
void Device::clear_comm_channel() {
  if (_impl_.comm_channel_ != nullptr) _impl_.comm_channel_->Clear();
  _impl_._has_bits_[0] &= ~0x00002000u;
}
void Device::clear_sim_number() {
  if (_impl_.sim_number_ != nullptr) _impl_.sim_number_->Clear();
  _impl_._has_bits_[0] &= ~0x00004000u;
}
void Device::clear_sim_serial() {
  if (_impl_.sim_serial_ != nullptr) _impl_.sim_serial_->Clear();
  _impl_._has_bits_[0] &= ~0x00008000u;
}
void Device::clear_ip_address_sim() {
  if (_impl_.ip_address_sim_ != nullptr) _impl_.ip_address_sim_->Clear();
  _impl_._has_bits_[0] &= ~0x00010000u;
}
void Device::clear_placement() {
  if (_impl_.placement_ != nullptr) _impl_.placement_->Clear();
  _impl_._has_bits_[0] &= ~0x00020000u;
}
void Device::clear_installation_place() {
  if (_impl_.installation_place_ != nullptr) _impl_.installation_place_->Clear();
  _impl_._has_bits_[0] &= ~0x00040000u;
}
void Device::clear_appkey() {
  if (_impl_.appkey_ != nullptr) _impl_.appkey_->Clear();
  _impl_._has_bits_[0] &= ~0x00080000u;
}
void Device::clear_appeui() {
  if (_impl_.appeui_ != nullptr) _impl_.appeui_->Clear();
  _impl_._has_bits_[0] &= ~0x00100000u;
}
void Device::clear_protocol_type_label() {
  if (_impl_.protocol_type_label_ != nullptr) _impl_.protocol_type_label_->Clear();
  _impl_._has_bits_[0] &= ~0x00200000u;
}
void Device::clear_channel_number() {
  if (_impl_.channel_number_ != nullptr) _impl_.channel_number_->Clear();
  _impl_._has_bits_[0] &= ~0x00400000u;
}
void Device::clear_wire_interface() {
  if (_impl_.wire_interface_ != nullptr) _impl_.wire_interface_->Clear();
  _impl_._has_bits_[0] &= ~0x00800000u;
}
void Device::clear_manufacture_year() {
  if (_impl_.manufacture_year_ != nullptr) _impl_.manufacture_year_->Clear();
  _impl_._has_bits_[0] &= ~0x01000000u;
}
Device::Device(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.Device)
}
Device::Device(const Device& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  Device* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.indicators_){from._impl_.indicators_}
    , decltype(_impl_.serial_number_) {}

    , decltype(_impl_.model_) {}

    , decltype(_impl_.fias_id_) {}

    , decltype(_impl_.resource_owner_id_) {}

    , decltype(_impl_.metric_point_){nullptr}
    , decltype(_impl_.created_at_){nullptr}
    , decltype(_impl_.changed_at_){nullptr}
    , decltype(_impl_.installed_at_){nullptr}
    , decltype(_impl_.removed_at_){nullptr}
    , decltype(_impl_.check_at_){nullptr}
    , decltype(_impl_.next_check_at_){nullptr}
    , decltype(_impl_.external_id_){nullptr}
    , decltype(_impl_.parent_id_){nullptr}
    , decltype(_impl_.dev_eui_){nullptr}
    , decltype(_impl_.mac_){nullptr}
    , decltype(_impl_.port_){nullptr}
    , decltype(_impl_.network_address_){nullptr}
    , decltype(_impl_.comm_channel_){nullptr}
    , decltype(_impl_.sim_number_){nullptr}
    , decltype(_impl_.sim_serial_){nullptr}
    , decltype(_impl_.ip_address_sim_){nullptr}
    , decltype(_impl_.placement_){nullptr}
    , decltype(_impl_.installation_place_){nullptr}
    , decltype(_impl_.appkey_){nullptr}
    , decltype(_impl_.appeui_){nullptr}
    , decltype(_impl_.protocol_type_label_){nullptr}
    , decltype(_impl_.channel_number_){nullptr}
    , decltype(_impl_.wire_interface_){nullptr}
    , decltype(_impl_.manufacture_year_){nullptr}
    , decltype(_impl_.id_) {}

    , decltype(_impl_.type_) {}

    , decltype(_impl_.year_) {}

    , decltype(_impl_.status_type_) {}

    , decltype(_impl_.plan_type_) {}

    , decltype(_impl_.pipe_type_) {}

    , decltype(_impl_.building_id_) {}

    , decltype(_impl_.indicator_vendor_type_) {}
  };

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.serial_number_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.serial_number_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_serial_number().empty()) {
    _this->_impl_.serial_number_.Set(from._internal_serial_number(), _this->GetArenaForAllocation());
  }
  _impl_.model_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.model_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_model().empty()) {
    _this->_impl_.model_.Set(from._internal_model(), _this->GetArenaForAllocation());
  }
  _impl_.fias_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.fias_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_fias_id().empty()) {
    _this->_impl_.fias_id_.Set(from._internal_fias_id(), _this->GetArenaForAllocation());
  }
  _impl_.resource_owner_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.resource_owner_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_resource_owner_id().empty()) {
    _this->_impl_.resource_owner_id_.Set(from._internal_resource_owner_id(), _this->GetArenaForAllocation());
  }
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.metric_point_ = new ::keyapis::telemetry_control::v1::Device_MetricPoint(*from._impl_.metric_point_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000002u) != 0) {
    _this->_impl_.created_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.created_at_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000004u) != 0) {
    _this->_impl_.changed_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.changed_at_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000008u) != 0) {
    _this->_impl_.installed_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.installed_at_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000010u) != 0) {
    _this->_impl_.removed_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.removed_at_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000020u) != 0) {
    _this->_impl_.check_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.check_at_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000040u) != 0) {
    _this->_impl_.next_check_at_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.next_check_at_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000080u) != 0) {
    _this->_impl_.external_id_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.external_id_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000100u) != 0) {
    _this->_impl_.parent_id_ = new ::PROTOBUF_NAMESPACE_ID::Int32Value(*from._impl_.parent_id_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000200u) != 0) {
    _this->_impl_.dev_eui_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.dev_eui_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000400u) != 0) {
    _this->_impl_.mac_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.mac_);
  }
  if ((from._impl_._has_bits_[0] & 0x00000800u) != 0) {
    _this->_impl_.port_ = new ::PROTOBUF_NAMESPACE_ID::Int32Value(*from._impl_.port_);
  }
  if ((from._impl_._has_bits_[0] & 0x00001000u) != 0) {
    _this->_impl_.network_address_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.network_address_);
  }
  if ((from._impl_._has_bits_[0] & 0x00002000u) != 0) {
    _this->_impl_.comm_channel_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.comm_channel_);
  }
  if ((from._impl_._has_bits_[0] & 0x00004000u) != 0) {
    _this->_impl_.sim_number_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.sim_number_);
  }
  if ((from._impl_._has_bits_[0] & 0x00008000u) != 0) {
    _this->_impl_.sim_serial_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.sim_serial_);
  }
  if ((from._impl_._has_bits_[0] & 0x00010000u) != 0) {
    _this->_impl_.ip_address_sim_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.ip_address_sim_);
  }
  if ((from._impl_._has_bits_[0] & 0x00020000u) != 0) {
    _this->_impl_.placement_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.placement_);
  }
  if ((from._impl_._has_bits_[0] & 0x00040000u) != 0) {
    _this->_impl_.installation_place_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.installation_place_);
  }
  if ((from._impl_._has_bits_[0] & 0x00080000u) != 0) {
    _this->_impl_.appkey_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.appkey_);
  }
  if ((from._impl_._has_bits_[0] & 0x00100000u) != 0) {
    _this->_impl_.appeui_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.appeui_);
  }
  if ((from._impl_._has_bits_[0] & 0x00200000u) != 0) {
    _this->_impl_.protocol_type_label_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.protocol_type_label_);
  }
  if ((from._impl_._has_bits_[0] & 0x00400000u) != 0) {
    _this->_impl_.channel_number_ = new ::PROTOBUF_NAMESPACE_ID::Int32Value(*from._impl_.channel_number_);
  }
  if ((from._impl_._has_bits_[0] & 0x00800000u) != 0) {
    _this->_impl_.wire_interface_ = new ::PROTOBUF_NAMESPACE_ID::StringValue(*from._impl_.wire_interface_);
  }
  if ((from._impl_._has_bits_[0] & 0x01000000u) != 0) {
    _this->_impl_.manufacture_year_ = new ::PROTOBUF_NAMESPACE_ID::Int32Value(*from._impl_.manufacture_year_);
  }
  ::memcpy(&_impl_.id_, &from._impl_.id_,
    static_cast<::size_t>(reinterpret_cast<char*>(&_impl_.indicator_vendor_type_) -
    reinterpret_cast<char*>(&_impl_.id_)) + sizeof(_impl_.indicator_vendor_type_));
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.Device)
}

inline void Device::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.indicators_){arena}
    , decltype(_impl_.serial_number_) {}

    , decltype(_impl_.model_) {}

    , decltype(_impl_.fias_id_) {}

    , decltype(_impl_.resource_owner_id_) {}

    , decltype(_impl_.metric_point_){nullptr}
    , decltype(_impl_.created_at_){nullptr}
    , decltype(_impl_.changed_at_){nullptr}
    , decltype(_impl_.installed_at_){nullptr}
    , decltype(_impl_.removed_at_){nullptr}
    , decltype(_impl_.check_at_){nullptr}
    , decltype(_impl_.next_check_at_){nullptr}
    , decltype(_impl_.external_id_){nullptr}
    , decltype(_impl_.parent_id_){nullptr}
    , decltype(_impl_.dev_eui_){nullptr}
    , decltype(_impl_.mac_){nullptr}
    , decltype(_impl_.port_){nullptr}
    , decltype(_impl_.network_address_){nullptr}
    , decltype(_impl_.comm_channel_){nullptr}
    , decltype(_impl_.sim_number_){nullptr}
    , decltype(_impl_.sim_serial_){nullptr}
    , decltype(_impl_.ip_address_sim_){nullptr}
    , decltype(_impl_.placement_){nullptr}
    , decltype(_impl_.installation_place_){nullptr}
    , decltype(_impl_.appkey_){nullptr}
    , decltype(_impl_.appeui_){nullptr}
    , decltype(_impl_.protocol_type_label_){nullptr}
    , decltype(_impl_.channel_number_){nullptr}
    , decltype(_impl_.wire_interface_){nullptr}
    , decltype(_impl_.manufacture_year_){nullptr}
    , decltype(_impl_.id_) { 0 }

    , decltype(_impl_.type_) { 0 }

    , decltype(_impl_.year_) { 0 }

    , decltype(_impl_.status_type_) { 0 }

    , decltype(_impl_.plan_type_) { 0 }

    , decltype(_impl_.pipe_type_) { 0 }

    , decltype(_impl_.building_id_) { 0 }

    , decltype(_impl_.indicator_vendor_type_) { 0 }

  };
  _impl_.serial_number_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.serial_number_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.model_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.model_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.fias_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.fias_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.resource_owner_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.resource_owner_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Device::~Device() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.Device)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Device::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _internal_mutable_indicators()->~RepeatedPtrField();
  _impl_.serial_number_.Destroy();
  _impl_.model_.Destroy();
  _impl_.fias_id_.Destroy();
  _impl_.resource_owner_id_.Destroy();
  if (this != internal_default_instance()) delete _impl_.metric_point_;
  if (this != internal_default_instance()) delete _impl_.created_at_;
  if (this != internal_default_instance()) delete _impl_.changed_at_;
  if (this != internal_default_instance()) delete _impl_.installed_at_;
  if (this != internal_default_instance()) delete _impl_.removed_at_;
  if (this != internal_default_instance()) delete _impl_.check_at_;
  if (this != internal_default_instance()) delete _impl_.next_check_at_;
  if (this != internal_default_instance()) delete _impl_.external_id_;
  if (this != internal_default_instance()) delete _impl_.parent_id_;
  if (this != internal_default_instance()) delete _impl_.dev_eui_;
  if (this != internal_default_instance()) delete _impl_.mac_;
  if (this != internal_default_instance()) delete _impl_.port_;
  if (this != internal_default_instance()) delete _impl_.network_address_;
  if (this != internal_default_instance()) delete _impl_.comm_channel_;
  if (this != internal_default_instance()) delete _impl_.sim_number_;
  if (this != internal_default_instance()) delete _impl_.sim_serial_;
  if (this != internal_default_instance()) delete _impl_.ip_address_sim_;
  if (this != internal_default_instance()) delete _impl_.placement_;
  if (this != internal_default_instance()) delete _impl_.installation_place_;
  if (this != internal_default_instance()) delete _impl_.appkey_;
  if (this != internal_default_instance()) delete _impl_.appeui_;
  if (this != internal_default_instance()) delete _impl_.protocol_type_label_;
  if (this != internal_default_instance()) delete _impl_.channel_number_;
  if (this != internal_default_instance()) delete _impl_.wire_interface_;
  if (this != internal_default_instance()) delete _impl_.manufacture_year_;
}

void Device::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Device::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.Device)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_mutable_indicators()->Clear();
  _impl_.serial_number_.ClearToEmpty();
  _impl_.model_.ClearToEmpty();
  _impl_.fias_id_.ClearToEmpty();
  _impl_.resource_owner_id_.ClearToEmpty();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      ABSL_DCHECK(_impl_.metric_point_ != nullptr);
      _impl_.metric_point_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      ABSL_DCHECK(_impl_.created_at_ != nullptr);
      _impl_.created_at_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      ABSL_DCHECK(_impl_.changed_at_ != nullptr);
      _impl_.changed_at_->Clear();
    }
    if (cached_has_bits & 0x00000008u) {
      ABSL_DCHECK(_impl_.installed_at_ != nullptr);
      _impl_.installed_at_->Clear();
    }
    if (cached_has_bits & 0x00000010u) {
      ABSL_DCHECK(_impl_.removed_at_ != nullptr);
      _impl_.removed_at_->Clear();
    }
    if (cached_has_bits & 0x00000020u) {
      ABSL_DCHECK(_impl_.check_at_ != nullptr);
      _impl_.check_at_->Clear();
    }
    if (cached_has_bits & 0x00000040u) {
      ABSL_DCHECK(_impl_.next_check_at_ != nullptr);
      _impl_.next_check_at_->Clear();
    }
    if (cached_has_bits & 0x00000080u) {
      ABSL_DCHECK(_impl_.external_id_ != nullptr);
      _impl_.external_id_->Clear();
    }
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      ABSL_DCHECK(_impl_.parent_id_ != nullptr);
      _impl_.parent_id_->Clear();
    }
    if (cached_has_bits & 0x00000200u) {
      ABSL_DCHECK(_impl_.dev_eui_ != nullptr);
      _impl_.dev_eui_->Clear();
    }
    if (cached_has_bits & 0x00000400u) {
      ABSL_DCHECK(_impl_.mac_ != nullptr);
      _impl_.mac_->Clear();
    }
    if (cached_has_bits & 0x00000800u) {
      ABSL_DCHECK(_impl_.port_ != nullptr);
      _impl_.port_->Clear();
    }
    if (cached_has_bits & 0x00001000u) {
      ABSL_DCHECK(_impl_.network_address_ != nullptr);
      _impl_.network_address_->Clear();
    }
    if (cached_has_bits & 0x00002000u) {
      ABSL_DCHECK(_impl_.comm_channel_ != nullptr);
      _impl_.comm_channel_->Clear();
    }
    if (cached_has_bits & 0x00004000u) {
      ABSL_DCHECK(_impl_.sim_number_ != nullptr);
      _impl_.sim_number_->Clear();
    }
    if (cached_has_bits & 0x00008000u) {
      ABSL_DCHECK(_impl_.sim_serial_ != nullptr);
      _impl_.sim_serial_->Clear();
    }
  }
  if (cached_has_bits & 0x00ff0000u) {
    if (cached_has_bits & 0x00010000u) {
      ABSL_DCHECK(_impl_.ip_address_sim_ != nullptr);
      _impl_.ip_address_sim_->Clear();
    }
    if (cached_has_bits & 0x00020000u) {
      ABSL_DCHECK(_impl_.placement_ != nullptr);
      _impl_.placement_->Clear();
    }
    if (cached_has_bits & 0x00040000u) {
      ABSL_DCHECK(_impl_.installation_place_ != nullptr);
      _impl_.installation_place_->Clear();
    }
    if (cached_has_bits & 0x00080000u) {
      ABSL_DCHECK(_impl_.appkey_ != nullptr);
      _impl_.appkey_->Clear();
    }
    if (cached_has_bits & 0x00100000u) {
      ABSL_DCHECK(_impl_.appeui_ != nullptr);
      _impl_.appeui_->Clear();
    }
    if (cached_has_bits & 0x00200000u) {
      ABSL_DCHECK(_impl_.protocol_type_label_ != nullptr);
      _impl_.protocol_type_label_->Clear();
    }
    if (cached_has_bits & 0x00400000u) {
      ABSL_DCHECK(_impl_.channel_number_ != nullptr);
      _impl_.channel_number_->Clear();
    }
    if (cached_has_bits & 0x00800000u) {
      ABSL_DCHECK(_impl_.wire_interface_ != nullptr);
      _impl_.wire_interface_->Clear();
    }
  }
  if (cached_has_bits & 0x01000000u) {
    ABSL_DCHECK(_impl_.manufacture_year_ != nullptr);
    _impl_.manufacture_year_->Clear();
  }
  ::memset(&_impl_.id_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.indicator_vendor_type_) -
      reinterpret_cast<char*>(&_impl_.id_)) + sizeof(_impl_.indicator_vendor_type_));
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* Device::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _impl_.id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated .keyapis.telemetry_control.v1.Indicator indicators = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_indicators(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3 [deprecated = true, (.google.api.field_visibility) = {
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_metric_point(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp created_at = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_created_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp changed_at = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_changed_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.Type type = 6 [(.google.api.field_behavior) = REQUIRED];
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 48)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::keyapis::telemetry_control::v1::Device_Type>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // string serial_number = 7 [(.google.api.field_behavior) = REQUIRED];
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
          auto str = _internal_mutable_serial_number();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // string model = 8 [(.google.api.field_behavior) = REQUIRED];
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
          auto str = _internal_mutable_model();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 year = 9 [deprecated = true, (.google.api.field_behavior) = REQUIRED, (.google.api.field_visibility) = {
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 72)) {
          _impl_.year_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // string fias_id = 10 [deprecated = true, (.google.api.field_behavior) = REQUIRED, (.google.api.field_visibility) = {
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 82)) {
          auto str = _internal_mutable_fias_id();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // string resource_owner_id = 11 [deprecated = true, (.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.field_visibility) = {
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 90)) {
          auto str = _internal_mutable_resource_owner_id();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.StatusType status_type = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 96)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_status_type(static_cast<::keyapis::telemetry_control::v1::Device_StatusType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp installed_at = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 106)) {
          ptr = ctx->ParseMessage(_internal_mutable_installed_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp removed_at = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_removed_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp check_at = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 122)) {
          ptr = ctx->ParseMessage(_internal_mutable_check_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Timestamp next_check_at = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 130)) {
          ptr = ctx->ParseMessage(_internal_mutable_next_check_at(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue external_id = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 138)) {
          ptr = ctx->ParseMessage(_internal_mutable_external_id(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.PlanType plan_type = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 144)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_plan_type(static_cast<::keyapis::telemetry_control::v1::Device_PlanType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Int32Value parent_id = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 154)) {
          ptr = ctx->ParseMessage(_internal_mutable_parent_id(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Device.PipeType pipe_type = 20;
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 160)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_pipe_type(static_cast<::keyapis::telemetry_control::v1::Device_PipeType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue dev_eui = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 170)) {
          ptr = ctx->ParseMessage(_internal_mutable_dev_eui(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue mac = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 178)) {
          ptr = ctx->ParseMessage(_internal_mutable_mac(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Int32Value port = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 186)) {
          ptr = ctx->ParseMessage(_internal_mutable_port(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue network_address = 24;
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 194)) {
          ptr = ctx->ParseMessage(_internal_mutable_network_address(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue comm_channel = 25;
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 202)) {
          ptr = ctx->ParseMessage(_internal_mutable_comm_channel(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue sim_number = 26;
      case 26:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 210)) {
          ptr = ctx->ParseMessage(_internal_mutable_sim_number(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue sim_serial = 27;
      case 27:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 218)) {
          ptr = ctx->ParseMessage(_internal_mutable_sim_serial(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue ip_address_sim = 28;
      case 28:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 226)) {
          ptr = ctx->ParseMessage(_internal_mutable_ip_address_sim(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue placement = 29;
      case 29:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 234)) {
          ptr = ctx->ParseMessage(_internal_mutable_placement(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue installation_place = 30;
      case 30:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 242)) {
          ptr = ctx->ParseMessage(_internal_mutable_installation_place(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue appkey = 31 [deprecated = true, (.google.api.field_visibility) = {
      case 31:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 250)) {
          ptr = ctx->ParseMessage(_internal_mutable_appkey(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue appeui = 32 [deprecated = true, (.google.api.field_visibility) = {
      case 32:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 2)) {
          ptr = ctx->ParseMessage(_internal_mutable_appeui(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue protocol_type_label = 33;
      case 33:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_protocol_type_label(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Int32Value channel_number = 34 [deprecated = true, (.google.api.field_visibility) = {
      case 34:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_channel_number(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.StringValue wire_interface = 35;
      case 35:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_wire_interface(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 building_id = 36;
      case 36:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 32)) {
          _impl_.building_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .google.protobuf.Int32Value manufacture_year = 37;
      case 37:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_manufacture_year(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.Indicator.VendorType indicator_vendor_type = 38;
      case 38:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 48)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_indicator_vendor_type(static_cast<::keyapis::telemetry_control::v1::Indicator_VendorType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* Device::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.Device)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 id = 1;
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_id(), target);
  }

  // repeated .keyapis.telemetry_control.v1.Indicator indicators = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_indicators_size()); i < n; i++) {
    const auto& repfield = this->_internal_indicators(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream);
  }

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3 [deprecated = true, (.google.api.field_visibility) = {
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, _Internal::metric_point(this),
        _Internal::metric_point(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Timestamp created_at = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::created_at(this),
        _Internal::created_at(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Timestamp changed_at = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
  if (cached_has_bits & 0x00000004u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, _Internal::changed_at(this),
        _Internal::changed_at(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.Device.Type type = 6 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        6, this->_internal_type(), target);
  }

  // string serial_number = 7 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_serial_number().empty()) {
    const std::string& _s = this->_internal_serial_number();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Device.serial_number");
    target = stream->WriteStringMaybeAliased(7, _s, target);
  }

  // string model = 8 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_model().empty()) {
    const std::string& _s = this->_internal_model();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Device.model");
    target = stream->WriteStringMaybeAliased(8, _s, target);
  }

  // int32 year = 9 [deprecated = true, (.google.api.field_behavior) = REQUIRED, (.google.api.field_visibility) = {
  if (this->_internal_year() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        9, this->_internal_year(), target);
  }

  // string fias_id = 10 [deprecated = true, (.google.api.field_behavior) = REQUIRED, (.google.api.field_visibility) = {
  if (!this->_internal_fias_id().empty()) {
    const std::string& _s = this->_internal_fias_id();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Device.fias_id");
    target = stream->WriteStringMaybeAliased(10, _s, target);
  }

  // string resource_owner_id = 11 [deprecated = true, (.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.field_visibility) = {
  if (!this->_internal_resource_owner_id().empty()) {
    const std::string& _s = this->_internal_resource_owner_id();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.Device.resource_owner_id");
    target = stream->WriteStringMaybeAliased(11, _s, target);
  }

  // .keyapis.telemetry_control.v1.Device.StatusType status_type = 12;
  if (this->_internal_status_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        12, this->_internal_status_type(), target);
  }

  // .google.protobuf.Timestamp installed_at = 13;
  if (cached_has_bits & 0x00000008u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(13, _Internal::installed_at(this),
        _Internal::installed_at(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Timestamp removed_at = 14;
  if (cached_has_bits & 0x00000010u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(14, _Internal::removed_at(this),
        _Internal::removed_at(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Timestamp check_at = 15;
  if (cached_has_bits & 0x00000020u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(15, _Internal::check_at(this),
        _Internal::check_at(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Timestamp next_check_at = 16;
  if (cached_has_bits & 0x00000040u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(16, _Internal::next_check_at(this),
        _Internal::next_check_at(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue external_id = 17;
  if (cached_has_bits & 0x00000080u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(17, _Internal::external_id(this),
        _Internal::external_id(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.Device.PlanType plan_type = 18;
  if (this->_internal_plan_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        18, this->_internal_plan_type(), target);
  }

  // .google.protobuf.Int32Value parent_id = 19;
  if (cached_has_bits & 0x00000100u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(19, _Internal::parent_id(this),
        _Internal::parent_id(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.Device.PipeType pipe_type = 20;
  if (this->_internal_pipe_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        20, this->_internal_pipe_type(), target);
  }

  // .google.protobuf.StringValue dev_eui = 21;
  if (cached_has_bits & 0x00000200u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(21, _Internal::dev_eui(this),
        _Internal::dev_eui(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue mac = 22;
  if (cached_has_bits & 0x00000400u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(22, _Internal::mac(this),
        _Internal::mac(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Int32Value port = 23;
  if (cached_has_bits & 0x00000800u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(23, _Internal::port(this),
        _Internal::port(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue network_address = 24;
  if (cached_has_bits & 0x00001000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(24, _Internal::network_address(this),
        _Internal::network_address(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue comm_channel = 25;
  if (cached_has_bits & 0x00002000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(25, _Internal::comm_channel(this),
        _Internal::comm_channel(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue sim_number = 26;
  if (cached_has_bits & 0x00004000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(26, _Internal::sim_number(this),
        _Internal::sim_number(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue sim_serial = 27;
  if (cached_has_bits & 0x00008000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(27, _Internal::sim_serial(this),
        _Internal::sim_serial(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue ip_address_sim = 28;
  if (cached_has_bits & 0x00010000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(28, _Internal::ip_address_sim(this),
        _Internal::ip_address_sim(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue placement = 29;
  if (cached_has_bits & 0x00020000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(29, _Internal::placement(this),
        _Internal::placement(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue installation_place = 30;
  if (cached_has_bits & 0x00040000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(30, _Internal::installation_place(this),
        _Internal::installation_place(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue appkey = 31 [deprecated = true, (.google.api.field_visibility) = {
  if (cached_has_bits & 0x00080000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(31, _Internal::appkey(this),
        _Internal::appkey(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue appeui = 32 [deprecated = true, (.google.api.field_visibility) = {
  if (cached_has_bits & 0x00100000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(32, _Internal::appeui(this),
        _Internal::appeui(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue protocol_type_label = 33;
  if (cached_has_bits & 0x00200000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(33, _Internal::protocol_type_label(this),
        _Internal::protocol_type_label(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.Int32Value channel_number = 34 [deprecated = true, (.google.api.field_visibility) = {
  if (cached_has_bits & 0x00400000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(34, _Internal::channel_number(this),
        _Internal::channel_number(this).GetCachedSize(), target, stream);
  }

  // .google.protobuf.StringValue wire_interface = 35;
  if (cached_has_bits & 0x00800000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(35, _Internal::wire_interface(this),
        _Internal::wire_interface(this).GetCachedSize(), target, stream);
  }

  // int32 building_id = 36;
  if (this->_internal_building_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        36, this->_internal_building_id(), target);
  }

  // .google.protobuf.Int32Value manufacture_year = 37;
  if (cached_has_bits & 0x01000000u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(37, _Internal::manufacture_year(this),
        _Internal::manufacture_year(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.Indicator.VendorType indicator_vendor_type = 38;
  if (this->_internal_indicator_vendor_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        38, this->_internal_indicator_vendor_type(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.Device)
  return target;
}

::size_t Device::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.Device)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .keyapis.telemetry_control.v1.Indicator indicators = 2 [(.google.api.field_behavior) = OUTPUT_ONLY];
  total_size += 1UL * this->_internal_indicators_size();
  for (const auto& msg : this->_internal_indicators()) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // string serial_number = 7 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_serial_number().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_serial_number());
  }

  // string model = 8 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_model().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_model());
  }

  // string fias_id = 10 [deprecated = true, (.google.api.field_behavior) = REQUIRED, (.google.api.field_visibility) = {
  if (!this->_internal_fias_id().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_fias_id());
  }

  // string resource_owner_id = 11 [deprecated = true, (.google.api.field_behavior) = OUTPUT_ONLY, (.google.api.field_visibility) = {
  if (!this->_internal_resource_owner_id().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_resource_owner_id());
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // .keyapis.telemetry_control.v1.Device.MetricPoint metric_point = 3 [deprecated = true, (.google.api.field_visibility) = {
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.metric_point_);
    }

    // .google.protobuf.Timestamp created_at = 4 [(.google.api.field_behavior) = OUTPUT_ONLY];
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.created_at_);
    }

    // .google.protobuf.Timestamp changed_at = 5 [(.google.api.field_behavior) = OUTPUT_ONLY];
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.changed_at_);
    }

    // .google.protobuf.Timestamp installed_at = 13;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.installed_at_);
    }

    // .google.protobuf.Timestamp removed_at = 14;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.removed_at_);
    }

    // .google.protobuf.Timestamp check_at = 15;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.check_at_);
    }

    // .google.protobuf.Timestamp next_check_at = 16;
    if (cached_has_bits & 0x00000040u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.next_check_at_);
    }

    // .google.protobuf.StringValue external_id = 17;
    if (cached_has_bits & 0x00000080u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.external_id_);
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // .google.protobuf.Int32Value parent_id = 19;
    if (cached_has_bits & 0x00000100u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.parent_id_);
    }

    // .google.protobuf.StringValue dev_eui = 21;
    if (cached_has_bits & 0x00000200u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dev_eui_);
    }

    // .google.protobuf.StringValue mac = 22;
    if (cached_has_bits & 0x00000400u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.mac_);
    }

    // .google.protobuf.Int32Value port = 23;
    if (cached_has_bits & 0x00000800u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.port_);
    }

    // .google.protobuf.StringValue network_address = 24;
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.network_address_);
    }

    // .google.protobuf.StringValue comm_channel = 25;
    if (cached_has_bits & 0x00002000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.comm_channel_);
    }

    // .google.protobuf.StringValue sim_number = 26;
    if (cached_has_bits & 0x00004000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.sim_number_);
    }

    // .google.protobuf.StringValue sim_serial = 27;
    if (cached_has_bits & 0x00008000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.sim_serial_);
    }

  }
  if (cached_has_bits & 0x00ff0000u) {
    // .google.protobuf.StringValue ip_address_sim = 28;
    if (cached_has_bits & 0x00010000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.ip_address_sim_);
    }

    // .google.protobuf.StringValue placement = 29;
    if (cached_has_bits & 0x00020000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.placement_);
    }

    // .google.protobuf.StringValue installation_place = 30;
    if (cached_has_bits & 0x00040000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.installation_place_);
    }

    // .google.protobuf.StringValue appkey = 31 [deprecated = true, (.google.api.field_visibility) = {
    if (cached_has_bits & 0x00080000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.appkey_);
    }

    // .google.protobuf.StringValue appeui = 32 [deprecated = true, (.google.api.field_visibility) = {
    if (cached_has_bits & 0x00100000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.appeui_);
    }

    // .google.protobuf.StringValue protocol_type_label = 33;
    if (cached_has_bits & 0x00200000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.protocol_type_label_);
    }

    // .google.protobuf.Int32Value channel_number = 34 [deprecated = true, (.google.api.field_visibility) = {
    if (cached_has_bits & 0x00400000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.channel_number_);
    }

    // .google.protobuf.StringValue wire_interface = 35;
    if (cached_has_bits & 0x00800000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.wire_interface_);
    }

  }
  // .google.protobuf.Int32Value manufacture_year = 37;
  if (cached_has_bits & 0x01000000u) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.manufacture_year_);
  }

  // int32 id = 1;
  if (this->_internal_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_id());
  }

  // .keyapis.telemetry_control.v1.Device.Type type = 6 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  // int32 year = 9 [deprecated = true, (.google.api.field_behavior) = REQUIRED, (.google.api.field_visibility) = {
  if (this->_internal_year() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_year());
  }

  // .keyapis.telemetry_control.v1.Device.StatusType status_type = 12;
  if (this->_internal_status_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_status_type());
  }

  // .keyapis.telemetry_control.v1.Device.PlanType plan_type = 18;
  if (this->_internal_plan_type() != 0) {
    total_size += 2 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_plan_type());
  }

  // .keyapis.telemetry_control.v1.Device.PipeType pipe_type = 20;
  if (this->_internal_pipe_type() != 0) {
    total_size += 2 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_pipe_type());
  }

  // int32 building_id = 36;
  if (this->_internal_building_id() != 0) {
    total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
                                    this->_internal_building_id());
  }

  // .keyapis.telemetry_control.v1.Indicator.VendorType indicator_vendor_type = 38;
  if (this->_internal_indicator_vendor_type() != 0) {
    total_size += 2 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_indicator_vendor_type());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void Device::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const Device*>(
      &from));
}

void Device::MergeFrom(const Device& from) {
  Device* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.Device)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_mutable_indicators()->MergeFrom(from._internal_indicators());
  if (!from._internal_serial_number().empty()) {
    _this->_internal_set_serial_number(from._internal_serial_number());
  }
  if (!from._internal_model().empty()) {
    _this->_internal_set_model(from._internal_model());
  }
  if (!from._internal_fias_id().empty()) {
    _this->_internal_set_fias_id(from._internal_fias_id());
  }
  if (!from._internal_resource_owner_id().empty()) {
    _this->_internal_set_resource_owner_id(from._internal_resource_owner_id());
  }
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_metric_point()->::keyapis::telemetry_control::v1::Device_MetricPoint::MergeFrom(
          from._internal_metric_point());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_created_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_created_at());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_mutable_changed_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_changed_at());
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_internal_mutable_installed_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_installed_at());
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_internal_mutable_removed_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_removed_at());
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_internal_mutable_check_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_check_at());
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_internal_mutable_next_check_at()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
          from._internal_next_check_at());
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_internal_mutable_external_id()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_external_id());
    }
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      _this->_internal_mutable_parent_id()->::PROTOBUF_NAMESPACE_ID::Int32Value::MergeFrom(
          from._internal_parent_id());
    }
    if (cached_has_bits & 0x00000200u) {
      _this->_internal_mutable_dev_eui()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_dev_eui());
    }
    if (cached_has_bits & 0x00000400u) {
      _this->_internal_mutable_mac()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_mac());
    }
    if (cached_has_bits & 0x00000800u) {
      _this->_internal_mutable_port()->::PROTOBUF_NAMESPACE_ID::Int32Value::MergeFrom(
          from._internal_port());
    }
    if (cached_has_bits & 0x00001000u) {
      _this->_internal_mutable_network_address()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_network_address());
    }
    if (cached_has_bits & 0x00002000u) {
      _this->_internal_mutable_comm_channel()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_comm_channel());
    }
    if (cached_has_bits & 0x00004000u) {
      _this->_internal_mutable_sim_number()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_sim_number());
    }
    if (cached_has_bits & 0x00008000u) {
      _this->_internal_mutable_sim_serial()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_sim_serial());
    }
  }
  if (cached_has_bits & 0x00ff0000u) {
    if (cached_has_bits & 0x00010000u) {
      _this->_internal_mutable_ip_address_sim()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_ip_address_sim());
    }
    if (cached_has_bits & 0x00020000u) {
      _this->_internal_mutable_placement()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_placement());
    }
    if (cached_has_bits & 0x00040000u) {
      _this->_internal_mutable_installation_place()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_installation_place());
    }
    if (cached_has_bits & 0x00080000u) {
      _this->_internal_mutable_appkey()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_appkey());
    }
    if (cached_has_bits & 0x00100000u) {
      _this->_internal_mutable_appeui()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_appeui());
    }
    if (cached_has_bits & 0x00200000u) {
      _this->_internal_mutable_protocol_type_label()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_protocol_type_label());
    }
    if (cached_has_bits & 0x00400000u) {
      _this->_internal_mutable_channel_number()->::PROTOBUF_NAMESPACE_ID::Int32Value::MergeFrom(
          from._internal_channel_number());
    }
    if (cached_has_bits & 0x00800000u) {
      _this->_internal_mutable_wire_interface()->::PROTOBUF_NAMESPACE_ID::StringValue::MergeFrom(
          from._internal_wire_interface());
    }
  }
  if (cached_has_bits & 0x01000000u) {
    _this->_internal_mutable_manufacture_year()->::PROTOBUF_NAMESPACE_ID::Int32Value::MergeFrom(
        from._internal_manufacture_year());
  }
  if (from._internal_id() != 0) {
    _this->_internal_set_id(from._internal_id());
  }
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  if (from._internal_year() != 0) {
    _this->_internal_set_year(from._internal_year());
  }
  if (from._internal_status_type() != 0) {
    _this->_internal_set_status_type(from._internal_status_type());
  }
  if (from._internal_plan_type() != 0) {
    _this->_internal_set_plan_type(from._internal_plan_type());
  }
  if (from._internal_pipe_type() != 0) {
    _this->_internal_set_pipe_type(from._internal_pipe_type());
  }
  if (from._internal_building_id() != 0) {
    _this->_internal_set_building_id(from._internal_building_id());
  }
  if (from._internal_indicator_vendor_type() != 0) {
    _this->_internal_set_indicator_vendor_type(from._internal_indicator_vendor_type());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void Device::CopyFrom(const Device& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.Device)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Device::IsInitialized() const {
  return true;
}

void Device::InternalSwap(Device* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _internal_mutable_indicators()->InternalSwap(other->_internal_mutable_indicators());
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.serial_number_, lhs_arena,
                                       &other->_impl_.serial_number_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.model_, lhs_arena,
                                       &other->_impl_.model_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.fias_id_, lhs_arena,
                                       &other->_impl_.fias_id_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.resource_owner_id_, lhs_arena,
                                       &other->_impl_.resource_owner_id_, rhs_arena);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Device, _impl_.indicator_vendor_type_)
      + sizeof(Device::_impl_.indicator_vendor_type_)
      - PROTOBUF_FIELD_OFFSET(Device, _impl_.metric_point_)>(
          reinterpret_cast<char*>(&_impl_.metric_point_),
          reinterpret_cast<char*>(&other->_impl_.metric_point_));
}

std::string Device::GetTypeName() const {
  return "keyapis.telemetry_control.v1.Device";
}

// ===================================================================

class GetDeviceListRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<GetDeviceListRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(GetDeviceListRequest, _impl_._has_bits_);
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceListRequest, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::DeviceFilter& filter(const GetDeviceListRequest* msg);
  static void set_has_filter(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::keyapis::telemetry_control::v1::DevicePaging& paging(const GetDeviceListRequest* msg);
};

const ::keyapis::telemetry_control::v1::DeviceFilter&
GetDeviceListRequest::_Internal::filter(const GetDeviceListRequest* msg) {
  return *msg->_impl_.filter_;
}
const ::keyapis::telemetry_control::v1::DevicePaging&
GetDeviceListRequest::_Internal::paging(const GetDeviceListRequest* msg) {
  return *msg->_impl_.pagination_.paging_;
}
void GetDeviceListRequest::set_allocated_paging(::keyapis::telemetry_control::v1::DevicePaging* paging) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_pagination();
  if (paging) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(paging);
    if (message_arena != submessage_arena) {
      paging = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, paging, submessage_arena);
    }
    set_has_paging();
    _impl_.pagination_.paging_ = paging;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceListRequest.paging)
}
GetDeviceListRequest::GetDeviceListRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceListRequest)
}
GetDeviceListRequest::GetDeviceListRequest(const GetDeviceListRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceListRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
    , decltype(_impl_.pagination_){}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.filter_ = new ::keyapis::telemetry_control::v1::DeviceFilter(*from._impl_.filter_);
  }
  clear_has_pagination();
  switch (from.pagination_case()) {
    case kPaging: {
      _this->_internal_mutable_paging()->::keyapis::telemetry_control::v1::DevicePaging::MergeFrom(
          from._internal_paging());
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceListRequest)
}

inline void GetDeviceListRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
    , decltype(_impl_.pagination_){}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_pagination();
}

GetDeviceListRequest::~GetDeviceListRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceListRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceListRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.filter_;
  if (has_pagination()) {
    clear_pagination();
  }
}

void GetDeviceListRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceListRequest::clear_pagination() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceListRequest)
  switch (pagination_case()) {
    case kPaging: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.pagination_.paging_;
      }
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = PAGINATION_NOT_SET;
}


void GetDeviceListRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceListRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.filter_ != nullptr);
    _impl_.filter_->Clear();
  }
  clear_pagination();
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceListRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceFilter filter = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_filter(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.DevicePaging paging = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_paging(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceListRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceListRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceFilter filter = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::filter(this),
        _Internal::filter(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.DevicePaging paging = 2;
  if (pagination_case() == kPaging) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::paging(this),
        _Internal::paging(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceListRequest)
  return target;
}

::size_t GetDeviceListRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceListRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceFilter filter = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.filter_);
  }

  switch (pagination_case()) {
    // .keyapis.telemetry_control.v1.DevicePaging paging = 2;
    case kPaging: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.pagination_.paging_);
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceListRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceListRequest*>(
      &from));
}

void GetDeviceListRequest::MergeFrom(const GetDeviceListRequest& from) {
  GetDeviceListRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceListRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_filter()->::keyapis::telemetry_control::v1::DeviceFilter::MergeFrom(
        from._internal_filter());
  }
  switch (from.pagination_case()) {
    case kPaging: {
      _this->_internal_mutable_paging()->::keyapis::telemetry_control::v1::DevicePaging::MergeFrom(
          from._internal_paging());
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceListRequest::CopyFrom(const GetDeviceListRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceListRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceListRequest::IsInitialized() const {
  return true;
}

void GetDeviceListRequest::InternalSwap(GetDeviceListRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.filter_, other->_impl_.filter_);
  swap(_impl_.pagination_, other->_impl_.pagination_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceListRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceListRequest";
}

// ===================================================================

class DevicePaging_ValidationError_LimitInvalid::_Internal {
 public:
};

DevicePaging_ValidationError_LimitInvalid::DevicePaging_ValidationError_LimitInvalid(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid)
}
DevicePaging_ValidationError_LimitInvalid::DevicePaging_ValidationError_LimitInvalid(const DevicePaging_ValidationError_LimitInvalid& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid)
}

inline void DevicePaging_ValidationError_LimitInvalid::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

DevicePaging_ValidationError_LimitInvalid::~DevicePaging_ValidationError_LimitInvalid() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DevicePaging_ValidationError_LimitInvalid::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void DevicePaging_ValidationError_LimitInvalid::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DevicePaging_ValidationError_LimitInvalid::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* DevicePaging_ValidationError_LimitInvalid::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DevicePaging_ValidationError_LimitInvalid::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid)
  return target;
}

::size_t DevicePaging_ValidationError_LimitInvalid::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DevicePaging_ValidationError_LimitInvalid::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DevicePaging_ValidationError_LimitInvalid*>(
      &from));
}

void DevicePaging_ValidationError_LimitInvalid::MergeFrom(const DevicePaging_ValidationError_LimitInvalid& from) {
  DevicePaging_ValidationError_LimitInvalid* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DevicePaging_ValidationError_LimitInvalid::CopyFrom(const DevicePaging_ValidationError_LimitInvalid& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DevicePaging_ValidationError_LimitInvalid::IsInitialized() const {
  return true;
}

void DevicePaging_ValidationError_LimitInvalid::InternalSwap(DevicePaging_ValidationError_LimitInvalid* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string DevicePaging_ValidationError_LimitInvalid::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid";
}

// ===================================================================

class DevicePaging_ValidationError_OffsetInvalid::_Internal {
 public:
};

DevicePaging_ValidationError_OffsetInvalid::DevicePaging_ValidationError_OffsetInvalid(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid)
}
DevicePaging_ValidationError_OffsetInvalid::DevicePaging_ValidationError_OffsetInvalid(const DevicePaging_ValidationError_OffsetInvalid& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid)
}

inline void DevicePaging_ValidationError_OffsetInvalid::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

DevicePaging_ValidationError_OffsetInvalid::~DevicePaging_ValidationError_OffsetInvalid() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DevicePaging_ValidationError_OffsetInvalid::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void DevicePaging_ValidationError_OffsetInvalid::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DevicePaging_ValidationError_OffsetInvalid::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* DevicePaging_ValidationError_OffsetInvalid::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DevicePaging_ValidationError_OffsetInvalid::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid)
  return target;
}

::size_t DevicePaging_ValidationError_OffsetInvalid::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DevicePaging_ValidationError_OffsetInvalid::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DevicePaging_ValidationError_OffsetInvalid*>(
      &from));
}

void DevicePaging_ValidationError_OffsetInvalid::MergeFrom(const DevicePaging_ValidationError_OffsetInvalid& from) {
  DevicePaging_ValidationError_OffsetInvalid* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DevicePaging_ValidationError_OffsetInvalid::CopyFrom(const DevicePaging_ValidationError_OffsetInvalid& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DevicePaging_ValidationError_OffsetInvalid::IsInitialized() const {
  return true;
}

void DevicePaging_ValidationError_OffsetInvalid::InternalSwap(DevicePaging_ValidationError_OffsetInvalid* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string DevicePaging_ValidationError_OffsetInvalid::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid";
}

// ===================================================================

class DevicePaging_ValidationError::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::DevicePaging_ValidationError, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_LimitInvalid& limit(const DevicePaging_ValidationError* msg);
  static const ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_OffsetInvalid& offset(const DevicePaging_ValidationError* msg);
};

const ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_LimitInvalid&
DevicePaging_ValidationError::_Internal::limit(const DevicePaging_ValidationError* msg) {
  return *msg->_impl_.reason_.limit_;
}
const ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_OffsetInvalid&
DevicePaging_ValidationError::_Internal::offset(const DevicePaging_ValidationError* msg) {
  return *msg->_impl_.reason_.offset_;
}
void DevicePaging_ValidationError::set_allocated_limit(::keyapis::telemetry_control::v1::DevicePaging_ValidationError_LimitInvalid* limit) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (limit) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(limit);
    if (message_arena != submessage_arena) {
      limit = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, limit, submessage_arena);
    }
    set_has_limit();
    _impl_.reason_.limit_ = limit;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.DevicePaging.ValidationError.limit)
}
void DevicePaging_ValidationError::set_allocated_offset(::keyapis::telemetry_control::v1::DevicePaging_ValidationError_OffsetInvalid* offset) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (offset) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(offset);
    if (message_arena != submessage_arena) {
      offset = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, offset, submessage_arena);
    }
    set_has_offset();
    _impl_.reason_.offset_ = offset;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.DevicePaging.ValidationError.offset)
}
DevicePaging_ValidationError::DevicePaging_ValidationError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
}
DevicePaging_ValidationError::DevicePaging_ValidationError(const DevicePaging_ValidationError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  DevicePaging_ValidationError* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kLimit: {
      _this->_internal_mutable_limit()->::keyapis::telemetry_control::v1::DevicePaging_ValidationError_LimitInvalid::MergeFrom(
          from._internal_limit());
      break;
    }
    case kOffset: {
      _this->_internal_mutable_offset()->::keyapis::telemetry_control::v1::DevicePaging_ValidationError_OffsetInvalid::MergeFrom(
          from._internal_offset());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
}

inline void DevicePaging_ValidationError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

DevicePaging_ValidationError::~DevicePaging_ValidationError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DevicePaging_ValidationError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void DevicePaging_ValidationError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DevicePaging_ValidationError::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
  switch (reason_case()) {
    case kLimit: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.limit_;
      }
      break;
    }
    case kOffset: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.offset_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void DevicePaging_ValidationError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* DevicePaging_ValidationError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid limit = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_limit(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid offset = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_offset(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DevicePaging_ValidationError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (reason_case()) {
    case kLimit: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::limit(this),
          _Internal::limit(this).GetCachedSize(), target, stream);
      break;
    }
    case kOffset: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::offset(this),
          _Internal::offset(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
  return target;
}

::size_t DevicePaging_ValidationError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid limit = 1;
    case kLimit: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.limit_);
      break;
    }
    // .keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid offset = 2;
    case kOffset: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.offset_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DevicePaging_ValidationError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DevicePaging_ValidationError*>(
      &from));
}

void DevicePaging_ValidationError::MergeFrom(const DevicePaging_ValidationError& from) {
  DevicePaging_ValidationError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kLimit: {
      _this->_internal_mutable_limit()->::keyapis::telemetry_control::v1::DevicePaging_ValidationError_LimitInvalid::MergeFrom(
          from._internal_limit());
      break;
    }
    case kOffset: {
      _this->_internal_mutable_offset()->::keyapis::telemetry_control::v1::DevicePaging_ValidationError_OffsetInvalid::MergeFrom(
          from._internal_offset());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DevicePaging_ValidationError::CopyFrom(const DevicePaging_ValidationError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DevicePaging.ValidationError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DevicePaging_ValidationError::IsInitialized() const {
  return true;
}

void DevicePaging_ValidationError::InternalSwap(DevicePaging_ValidationError* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string DevicePaging_ValidationError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DevicePaging.ValidationError";
}

// ===================================================================

class DevicePaging::_Internal {
 public:
};

DevicePaging::DevicePaging(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DevicePaging)
}
DevicePaging::DevicePaging(const DevicePaging& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DevicePaging)
}

inline void DevicePaging::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.order_by_type_) { 0 }

    , decltype(_impl_.direction_type_) { 0 }

    , decltype(_impl_.limit_) { 0 }

    , decltype(_impl_.offset_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DevicePaging::~DevicePaging() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DevicePaging)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DevicePaging::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void DevicePaging::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DevicePaging::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DevicePaging)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.order_by_type_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.offset_) -
      reinterpret_cast<char*>(&_impl_.order_by_type_)) + sizeof(_impl_.offset_));
  _internal_metadata_.Clear<std::string>();
}

const char* DevicePaging::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DevicePaging.OrderByType order_by_type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_order_by_type(static_cast<::keyapis::telemetry_control::v1::DevicePaging_OrderByType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.DevicePaging.DirectionType direction_type = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_direction_type(static_cast<::keyapis::telemetry_control::v1::DevicePaging_DirectionType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 limit = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 24)) {
          _impl_.limit_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 offset = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 32)) {
          _impl_.offset_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DevicePaging::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DevicePaging)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DevicePaging.OrderByType order_by_type = 1;
  if (this->_internal_order_by_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this->_internal_order_by_type(), target);
  }

  // .keyapis.telemetry_control.v1.DevicePaging.DirectionType direction_type = 2;
  if (this->_internal_direction_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this->_internal_direction_type(), target);
  }

  // int32 limit = 3;
  if (this->_internal_limit() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        3, this->_internal_limit(), target);
  }

  // int32 offset = 4;
  if (this->_internal_offset() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        4, this->_internal_offset(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DevicePaging)
  return target;
}

::size_t DevicePaging::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DevicePaging)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DevicePaging.OrderByType order_by_type = 1;
  if (this->_internal_order_by_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_order_by_type());
  }

  // .keyapis.telemetry_control.v1.DevicePaging.DirectionType direction_type = 2;
  if (this->_internal_direction_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_direction_type());
  }

  // int32 limit = 3;
  if (this->_internal_limit() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_limit());
  }

  // int32 offset = 4;
  if (this->_internal_offset() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_offset());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DevicePaging::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DevicePaging*>(
      &from));
}

void DevicePaging::MergeFrom(const DevicePaging& from) {
  DevicePaging* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DevicePaging)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_order_by_type() != 0) {
    _this->_internal_set_order_by_type(from._internal_order_by_type());
  }
  if (from._internal_direction_type() != 0) {
    _this->_internal_set_direction_type(from._internal_direction_type());
  }
  if (from._internal_limit() != 0) {
    _this->_internal_set_limit(from._internal_limit());
  }
  if (from._internal_offset() != 0) {
    _this->_internal_set_offset(from._internal_offset());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DevicePaging::CopyFrom(const DevicePaging& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DevicePaging)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DevicePaging::IsInitialized() const {
  return true;
}

void DevicePaging::InternalSwap(DevicePaging* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DevicePaging, _impl_.offset_)
      + sizeof(DevicePaging::_impl_.offset_)
      - PROTOBUF_FIELD_OFFSET(DevicePaging, _impl_.order_by_type_)>(
          reinterpret_cast<char*>(&_impl_.order_by_type_),
          reinterpret_cast<char*>(&other->_impl_.order_by_type_));
}

std::string DevicePaging::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DevicePaging";
}

// ===================================================================

class GetDeviceListResponse_Error::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceListResponse_Error, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::DeviceFilter_ValidationError& device_filter_validation(const GetDeviceListResponse_Error* msg);
  static const ::keyapis::telemetry_control::v1::DevicePaging_ValidationError& device_paging_validation(const GetDeviceListResponse_Error* msg);
};

const ::keyapis::telemetry_control::v1::DeviceFilter_ValidationError&
GetDeviceListResponse_Error::_Internal::device_filter_validation(const GetDeviceListResponse_Error* msg) {
  return *msg->_impl_.reason_.device_filter_validation_;
}
const ::keyapis::telemetry_control::v1::DevicePaging_ValidationError&
GetDeviceListResponse_Error::_Internal::device_paging_validation(const GetDeviceListResponse_Error* msg) {
  return *msg->_impl_.reason_.device_paging_validation_;
}
void GetDeviceListResponse_Error::set_allocated_device_filter_validation(::keyapis::telemetry_control::v1::DeviceFilter_ValidationError* device_filter_validation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (device_filter_validation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(device_filter_validation);
    if (message_arena != submessage_arena) {
      device_filter_validation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, device_filter_validation, submessage_arena);
    }
    set_has_device_filter_validation();
    _impl_.reason_.device_filter_validation_ = device_filter_validation;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceListResponse.Error.device_filter_validation)
}
void GetDeviceListResponse_Error::set_allocated_device_paging_validation(::keyapis::telemetry_control::v1::DevicePaging_ValidationError* device_paging_validation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (device_paging_validation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(device_paging_validation);
    if (message_arena != submessage_arena) {
      device_paging_validation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, device_paging_validation, submessage_arena);
    }
    set_has_device_paging_validation();
    _impl_.reason_.device_paging_validation_ = device_paging_validation;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceListResponse.Error.device_paging_validation)
}
GetDeviceListResponse_Error::GetDeviceListResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
}
GetDeviceListResponse_Error::GetDeviceListResponse_Error(const GetDeviceListResponse_Error& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceListResponse_Error* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kDeviceFilterValidation: {
      _this->_internal_mutable_device_filter_validation()->::keyapis::telemetry_control::v1::DeviceFilter_ValidationError::MergeFrom(
          from._internal_device_filter_validation());
      break;
    }
    case kDevicePagingValidation: {
      _this->_internal_mutable_device_paging_validation()->::keyapis::telemetry_control::v1::DevicePaging_ValidationError::MergeFrom(
          from._internal_device_paging_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
}

inline void GetDeviceListResponse_Error::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

GetDeviceListResponse_Error::~GetDeviceListResponse_Error() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceListResponse_Error::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void GetDeviceListResponse_Error::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceListResponse_Error::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
  switch (reason_case()) {
    case kDeviceFilterValidation: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.device_filter_validation_;
      }
      break;
    }
    case kDevicePagingValidation: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.device_paging_validation_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void GetDeviceListResponse_Error::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceListResponse_Error::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceFilter.ValidationError device_filter_validation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_filter_validation(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.DevicePaging.ValidationError device_paging_validation = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_paging_validation(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceListResponse_Error::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (reason_case()) {
    case kDeviceFilterValidation: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::device_filter_validation(this),
          _Internal::device_filter_validation(this).GetCachedSize(), target, stream);
      break;
    }
    case kDevicePagingValidation: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::device_paging_validation(this),
          _Internal::device_paging_validation(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
  return target;
}

::size_t GetDeviceListResponse_Error::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.DeviceFilter.ValidationError device_filter_validation = 1;
    case kDeviceFilterValidation: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.device_filter_validation_);
      break;
    }
    // .keyapis.telemetry_control.v1.DevicePaging.ValidationError device_paging_validation = 2;
    case kDevicePagingValidation: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.device_paging_validation_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceListResponse_Error::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceListResponse_Error*>(
      &from));
}

void GetDeviceListResponse_Error::MergeFrom(const GetDeviceListResponse_Error& from) {
  GetDeviceListResponse_Error* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kDeviceFilterValidation: {
      _this->_internal_mutable_device_filter_validation()->::keyapis::telemetry_control::v1::DeviceFilter_ValidationError::MergeFrom(
          from._internal_device_filter_validation());
      break;
    }
    case kDevicePagingValidation: {
      _this->_internal_mutable_device_paging_validation()->::keyapis::telemetry_control::v1::DevicePaging_ValidationError::MergeFrom(
          from._internal_device_paging_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceListResponse_Error::CopyFrom(const GetDeviceListResponse_Error& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceListResponse.Error)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceListResponse_Error::IsInitialized() const {
  return true;
}

void GetDeviceListResponse_Error::InternalSwap(GetDeviceListResponse_Error* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceListResponse_Error::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceListResponse.Error";
}

// ===================================================================

class GetDeviceListResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceListResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::Device& data(const GetDeviceListResponse* msg);
  static const ::keyapis::telemetry_control::v1::GetDeviceListResponse_Error& error(const GetDeviceListResponse* msg);
};

const ::keyapis::telemetry_control::v1::Device&
GetDeviceListResponse::_Internal::data(const GetDeviceListResponse* msg) {
  return *msg->_impl_.type_.data_;
}
const ::keyapis::telemetry_control::v1::GetDeviceListResponse_Error&
GetDeviceListResponse::_Internal::error(const GetDeviceListResponse* msg) {
  return *msg->_impl_.type_.error_;
}
void GetDeviceListResponse::set_allocated_data(::keyapis::telemetry_control::v1::Device* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceListResponse.data)
}
void GetDeviceListResponse::set_allocated_error(::keyapis::telemetry_control::v1::GetDeviceListResponse_Error* error) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (error) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(error);
    if (message_arena != submessage_arena) {
      error = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, error, submessage_arena);
    }
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceListResponse.error)
}
GetDeviceListResponse::GetDeviceListResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceListResponse)
}
GetDeviceListResponse::GetDeviceListResponse(const GetDeviceListResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceListResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Device::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::GetDeviceListResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceListResponse)
}

inline void GetDeviceListResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceListResponse::~GetDeviceListResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceListResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceListResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceListResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceListResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceListResponse)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case kError: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.error_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceListResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceListResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceListResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.Device data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.GetDeviceListResponse.Error error = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_error(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceListResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceListResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (type_case()) {
    case kData: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, _Internal::data(this),
          _Internal::data(this).GetCachedSize(), target, stream);
      break;
    }
    case kError: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::error(this),
          _Internal::error(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceListResponse)
  return target;
}

::size_t GetDeviceListResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceListResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.Device data = 1;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    // .keyapis.telemetry_control.v1.GetDeviceListResponse.Error error = 2;
    case kError: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.error_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceListResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceListResponse*>(
      &from));
}

void GetDeviceListResponse::MergeFrom(const GetDeviceListResponse& from) {
  GetDeviceListResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceListResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::Device::MergeFrom(
          from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::GetDeviceListResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceListResponse::CopyFrom(const GetDeviceListResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceListResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceListResponse::IsInitialized() const {
  return true;
}

void GetDeviceListResponse::InternalSwap(GetDeviceListResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceListResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceListResponse";
}

// ===================================================================

class DeviceFilter_ValidationError::_Internal {
 public:
};

DeviceFilter_ValidationError::DeviceFilter_ValidationError(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeviceFilter.ValidationError)
}
DeviceFilter_ValidationError::DeviceFilter_ValidationError(const DeviceFilter_ValidationError& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  DeviceFilter_ValidationError* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.path_) {}

    , decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.path_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.path_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_path().empty()) {
    _this->_impl_.path_.Set(from._internal_path(), _this->GetArenaForAllocation());
  }
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_message().empty()) {
    _this->_impl_.message_.Set(from._internal_message(), _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeviceFilter.ValidationError)
}

inline void DeviceFilter_ValidationError::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.path_) {}

    , decltype(_impl_.message_) {}

    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.path_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.path_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.message_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

DeviceFilter_ValidationError::~DeviceFilter_ValidationError() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeviceFilter.ValidationError)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeviceFilter_ValidationError::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.path_.Destroy();
  _impl_.message_.Destroy();
}

void DeviceFilter_ValidationError::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeviceFilter_ValidationError::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeviceFilter.ValidationError)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.path_.ClearToEmpty();
  _impl_.message_.ClearToEmpty();
  _internal_metadata_.Clear<std::string>();
}

const char* DeviceFilter_ValidationError::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string path = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_path();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // string message = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_message();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeviceFilter_ValidationError::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeviceFilter.ValidationError)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string path = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_path().empty()) {
    const std::string& _s = this->_internal_path();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceFilter.ValidationError.path");
    target = stream->WriteStringMaybeAliased(1, _s, target);
  }

  // string message = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    const std::string& _s = this->_internal_message();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceFilter.ValidationError.message");
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeviceFilter.ValidationError)
  return target;
}

::size_t DeviceFilter_ValidationError::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeviceFilter.ValidationError)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string path = 1 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_path().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_path());
  }

  // string message = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_message().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_message());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeviceFilter_ValidationError::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeviceFilter_ValidationError*>(
      &from));
}

void DeviceFilter_ValidationError::MergeFrom(const DeviceFilter_ValidationError& from) {
  DeviceFilter_ValidationError* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeviceFilter.ValidationError)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_path().empty()) {
    _this->_internal_set_path(from._internal_path());
  }
  if (!from._internal_message().empty()) {
    _this->_internal_set_message(from._internal_message());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeviceFilter_ValidationError::CopyFrom(const DeviceFilter_ValidationError& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeviceFilter.ValidationError)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceFilter_ValidationError::IsInitialized() const {
  return true;
}

void DeviceFilter_ValidationError::InternalSwap(DeviceFilter_ValidationError* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.path_, lhs_arena,
                                       &other->_impl_.path_, rhs_arena);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.message_, lhs_arena,
                                       &other->_impl_.message_, rhs_arena);
}

std::string DeviceFilter_ValidationError::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeviceFilter.ValidationError";
}

// ===================================================================

class DeviceFilter::_Internal {
 public:
};

DeviceFilter::DeviceFilter(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeviceFilter)
}
DeviceFilter::DeviceFilter(const DeviceFilter& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  DeviceFilter* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.fias_ids_){from._impl_.fias_ids_}
    , decltype(_impl_.types_) { from._internal_types() }
    , /*decltype(_impl_._types_cached_byte_size_)*/ { 0 }

    , decltype(_impl_.status_types_) { from._internal_status_types() }
    , /*decltype(_impl_._status_types_cached_byte_size_)*/ { 0 }

    , decltype(_impl_.models_){from._impl_.models_}
    , decltype(_impl_.metric_point_metric_types_) { from._internal_metric_point_metric_types() }
    , /*decltype(_impl_._metric_point_metric_types_cached_byte_size_)*/ { 0 }

    , decltype(_impl_.room_numbers_){from._impl_.room_numbers_}
    , decltype(_impl_.room_labels_){from._impl_.room_labels_}
    , decltype(_impl_.parent_ids_) { from._impl_.parent_ids_ }
    ,/* _impl_._parent_ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.ids_) { from._impl_.ids_ }
    ,/* _impl_._ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.building_ids_) { from._impl_.building_ids_ }
    ,/* _impl_._building_ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.serial_numbers_){from._impl_.serial_numbers_}
    , decltype(_impl_.metric_point_ids_){from._impl_.metric_point_ids_}
    , decltype(_impl_.serial_ids_){from._impl_.serial_ids_}
    , decltype(_impl_.orpons_) { from._impl_.orpons_ }
    ,/* _impl_._orpons_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.indicator_vendor_types_) { from._internal_indicator_vendor_types() }
    , /*decltype(_impl_._indicator_vendor_types_cached_byte_size_)*/ { 0 }

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeviceFilter)
}

inline void DeviceFilter::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.fias_ids_){arena}
    , decltype(_impl_.types_) { arena }
    , /*decltype(_impl_._types_cached_byte_size_)*/ { 0 }

    , decltype(_impl_.status_types_) { arena }
    , /*decltype(_impl_._status_types_cached_byte_size_)*/ { 0 }

    , decltype(_impl_.models_){arena}
    , decltype(_impl_.metric_point_metric_types_) { arena }
    , /*decltype(_impl_._metric_point_metric_types_cached_byte_size_)*/ { 0 }

    , decltype(_impl_.room_numbers_){arena}
    , decltype(_impl_.room_labels_){arena}
    , decltype(_impl_.parent_ids_) { arena }
    ,/* _impl_._parent_ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.ids_) { arena }
    ,/* _impl_._ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.building_ids_) { arena }
    ,/* _impl_._building_ids_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.serial_numbers_){arena}
    , decltype(_impl_.metric_point_ids_){arena}
    , decltype(_impl_.serial_ids_){arena}
    , decltype(_impl_.orpons_) { arena }
    ,/* _impl_._orpons_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.indicator_vendor_types_) { arena }
    , /*decltype(_impl_._indicator_vendor_types_cached_byte_size_)*/ { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DeviceFilter::~DeviceFilter() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeviceFilter)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeviceFilter::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _internal_mutable_fias_ids()->~RepeatedPtrField();
  _internal_mutable_types()->~RepeatedField();
  _internal_mutable_status_types()->~RepeatedField();
  _internal_mutable_models()->~RepeatedPtrField();
  _internal_mutable_metric_point_metric_types()->~RepeatedField();
  _internal_mutable_room_numbers()->~RepeatedPtrField();
  _internal_mutable_room_labels()->~RepeatedPtrField();
  _impl_.parent_ids_.~RepeatedField();
  _impl_.ids_.~RepeatedField();
  _impl_.building_ids_.~RepeatedField();
  _internal_mutable_serial_numbers()->~RepeatedPtrField();
  _internal_mutable_metric_point_ids()->~RepeatedPtrField();
  _internal_mutable_serial_ids()->~RepeatedPtrField();
  _impl_.orpons_.~RepeatedField();
  _internal_mutable_indicator_vendor_types()->~RepeatedField();
}

void DeviceFilter::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeviceFilter::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeviceFilter)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_mutable_fias_ids()->Clear();
  _internal_mutable_types()->Clear();
  _internal_mutable_status_types()->Clear();
  _internal_mutable_models()->Clear();
  _internal_mutable_metric_point_metric_types()->Clear();
  _internal_mutable_room_numbers()->Clear();
  _internal_mutable_room_labels()->Clear();
  _internal_mutable_parent_ids()->Clear();
  _internal_mutable_ids()->Clear();
  _internal_mutable_building_ids()->Clear();
  _internal_mutable_serial_numbers()->Clear();
  _internal_mutable_metric_point_ids()->Clear();
  _internal_mutable_serial_ids()->Clear();
  _internal_mutable_orpons()->Clear();
  _internal_mutable_indicator_vendor_types()->Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* DeviceFilter::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated string fias_ids = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_fias_ids();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated .keyapis.telemetry_control.v1.Device.Type types = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(_internal_mutable_types(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 16) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_add_types(static_cast<::keyapis::telemetry_control::v1::Device_Type>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated .keyapis.telemetry_control.v1.Device.StatusType status_types = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(_internal_mutable_status_types(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 24) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_add_status_types(static_cast<::keyapis::telemetry_control::v1::Device_StatusType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string models = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_models();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated .keyapis.telemetry_control.v1.Device.MetricPoint.MetricType metric_point_metric_types = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(_internal_mutable_metric_point_metric_types(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 40) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_add_metric_point_metric_types(static_cast<::keyapis::telemetry_control::v1::Device_MetricPoint_MetricType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string room_numbers = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_room_numbers();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string room_labels = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_room_labels();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated int32 parent_ids = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_parent_ids(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 64) {
          _internal_add_parent_ids(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated int32 ids = 9 [deprecated = true, (.google.api.field_visibility) = {
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 74)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_ids(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 72) {
          _internal_add_ids(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated int32 building_ids = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 82)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_building_ids(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 80) {
          _internal_add_building_ids(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string serial_numbers = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 90)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_serial_numbers();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string metric_point_ids = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 98)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_metric_point_ids();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<98>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string serial_ids = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 106)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_serial_ids();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<106>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated int64 orpons = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 114)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt64Parser(_internal_mutable_orpons(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 112) {
          _internal_add_orpons(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated .keyapis.telemetry_control.v1.Indicator.VendorType indicator_vendor_types = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 122)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(_internal_mutable_indicator_vendor_types(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 120) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_add_indicator_vendor_types(static_cast<::keyapis::telemetry_control::v1::Indicator_VendorType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeviceFilter::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeviceFilter)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string fias_ids = 1;
  for (int i = 0, n = this->_internal_fias_ids_size(); i < n; ++i) {
    const auto& s = this->_internal_fias_ids(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceFilter.fias_ids");
    target = stream->WriteString(1, s, target);
  }

  // repeated .keyapis.telemetry_control.v1.Device.Type types = 2;
  {
    int byte_size = _impl_._types_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteEnumPacked(2, _internal_types(),
                                       byte_size, target);
    }
  }

  // repeated .keyapis.telemetry_control.v1.Device.StatusType status_types = 3;
  {
    int byte_size = _impl_._status_types_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteEnumPacked(3, _internal_status_types(),
                                       byte_size, target);
    }
  }

  // repeated string models = 4;
  for (int i = 0, n = this->_internal_models_size(); i < n; ++i) {
    const auto& s = this->_internal_models(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceFilter.models");
    target = stream->WriteString(4, s, target);
  }

  // repeated .keyapis.telemetry_control.v1.Device.MetricPoint.MetricType metric_point_metric_types = 5;
  {
    int byte_size = _impl_._metric_point_metric_types_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteEnumPacked(5, _internal_metric_point_metric_types(),
                                       byte_size, target);
    }
  }

  // repeated string room_numbers = 6;
  for (int i = 0, n = this->_internal_room_numbers_size(); i < n; ++i) {
    const auto& s = this->_internal_room_numbers(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceFilter.room_numbers");
    target = stream->WriteString(6, s, target);
  }

  // repeated string room_labels = 7;
  for (int i = 0, n = this->_internal_room_labels_size(); i < n; ++i) {
    const auto& s = this->_internal_room_labels(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceFilter.room_labels");
    target = stream->WriteString(7, s, target);
  }

  // repeated int32 parent_ids = 8;
  {
    int byte_size = _impl_._parent_ids_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(8, _internal_parent_ids(),
                                                 byte_size, target);
    }
  }

  // repeated int32 ids = 9 [deprecated = true, (.google.api.field_visibility) = {
  {
    int byte_size = _impl_._ids_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(9, _internal_ids(),
                                                 byte_size, target);
    }
  }

  // repeated int32 building_ids = 10;
  {
    int byte_size = _impl_._building_ids_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(10, _internal_building_ids(),
                                                 byte_size, target);
    }
  }

  // repeated string serial_numbers = 11;
  for (int i = 0, n = this->_internal_serial_numbers_size(); i < n; ++i) {
    const auto& s = this->_internal_serial_numbers(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceFilter.serial_numbers");
    target = stream->WriteString(11, s, target);
  }

  // repeated string metric_point_ids = 12;
  for (int i = 0, n = this->_internal_metric_point_ids_size(); i < n; ++i) {
    const auto& s = this->_internal_metric_point_ids(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceFilter.metric_point_ids");
    target = stream->WriteString(12, s, target);
  }

  // repeated string serial_ids = 13;
  for (int i = 0, n = this->_internal_serial_ids_size(); i < n; ++i) {
    const auto& s = this->_internal_serial_ids(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceFilter.serial_ids");
    target = stream->WriteString(13, s, target);
  }

  // repeated int64 orpons = 14;
  {
    int byte_size = _impl_._orpons_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteInt64Packed(14, _internal_orpons(),
                                                 byte_size, target);
    }
  }

  // repeated .keyapis.telemetry_control.v1.Indicator.VendorType indicator_vendor_types = 15;
  {
    int byte_size = _impl_._indicator_vendor_types_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteEnumPacked(15, _internal_indicator_vendor_types(),
                                       byte_size, target);
    }
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeviceFilter)
  return target;
}

::size_t DeviceFilter::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeviceFilter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string fias_ids = 1;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_fias_ids().size());
  for (int i = 0, n = _internal_fias_ids().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_fias_ids().Get(i));
  }

  // repeated .keyapis.telemetry_control.v1.Device.Type types = 2;
  {
    std::size_t data_size = 0;
    auto count = static_cast<std::size_t>(this->_internal_types_size());

    for (std::size_t i = 0; i < count; ++i) {
      data_size += ::_pbi::WireFormatLite::EnumSize(
          this->_internal_types(static_cast<int>(i)));
    }
    total_size += data_size;
    if (data_size > 0) {
      total_size += 1;
      total_size += ::_pbi::WireFormatLite::Int32Size(
          static_cast<int32_t>(data_size));
    }
    _impl_._types_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
  }

  // repeated .keyapis.telemetry_control.v1.Device.StatusType status_types = 3;
  {
    std::size_t data_size = 0;
    auto count = static_cast<std::size_t>(this->_internal_status_types_size());

    for (std::size_t i = 0; i < count; ++i) {
      data_size += ::_pbi::WireFormatLite::EnumSize(
          this->_internal_status_types(static_cast<int>(i)));
    }
    total_size += data_size;
    if (data_size > 0) {
      total_size += 1;
      total_size += ::_pbi::WireFormatLite::Int32Size(
          static_cast<int32_t>(data_size));
    }
    _impl_._status_types_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
  }

  // repeated string models = 4;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_models().size());
  for (int i = 0, n = _internal_models().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_models().Get(i));
  }

  // repeated .keyapis.telemetry_control.v1.Device.MetricPoint.MetricType metric_point_metric_types = 5;
  {
    std::size_t data_size = 0;
    auto count = static_cast<std::size_t>(this->_internal_metric_point_metric_types_size());

    for (std::size_t i = 0; i < count; ++i) {
      data_size += ::_pbi::WireFormatLite::EnumSize(
          this->_internal_metric_point_metric_types(static_cast<int>(i)));
    }
    total_size += data_size;
    if (data_size > 0) {
      total_size += 1;
      total_size += ::_pbi::WireFormatLite::Int32Size(
          static_cast<int32_t>(data_size));
    }
    _impl_._metric_point_metric_types_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
  }

  // repeated string room_numbers = 6;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_room_numbers().size());
  for (int i = 0, n = _internal_room_numbers().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_room_numbers().Get(i));
  }

  // repeated string room_labels = 7;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_room_labels().size());
  for (int i = 0, n = _internal_room_labels().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_room_labels().Get(i));
  }

  // repeated int32 parent_ids = 8;
  {
    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
        this->_internal_parent_ids())
    ;
    _impl_._parent_ids_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }

  // repeated int32 ids = 9 [deprecated = true, (.google.api.field_visibility) = {
  {
    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
        this->_internal_ids())
    ;
    _impl_._ids_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }

  // repeated int32 building_ids = 10;
  {
    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
        this->_internal_building_ids())
    ;
    _impl_._building_ids_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }

  // repeated string serial_numbers = 11;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_serial_numbers().size());
  for (int i = 0, n = _internal_serial_numbers().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_serial_numbers().Get(i));
  }

  // repeated string metric_point_ids = 12;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_metric_point_ids().size());
  for (int i = 0, n = _internal_metric_point_ids().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_metric_point_ids().Get(i));
  }

  // repeated string serial_ids = 13;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_serial_ids().size());
  for (int i = 0, n = _internal_serial_ids().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_serial_ids().Get(i));
  }

  // repeated int64 orpons = 14;
  {
    std::size_t data_size = ::_pbi::WireFormatLite::Int64Size(
        this->_internal_orpons())
    ;
    _impl_._orpons_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }

  // repeated .keyapis.telemetry_control.v1.Indicator.VendorType indicator_vendor_types = 15;
  {
    std::size_t data_size = 0;
    auto count = static_cast<std::size_t>(this->_internal_indicator_vendor_types_size());

    for (std::size_t i = 0; i < count; ++i) {
      data_size += ::_pbi::WireFormatLite::EnumSize(
          this->_internal_indicator_vendor_types(static_cast<int>(i)));
    }
    total_size += data_size;
    if (data_size > 0) {
      total_size += 1;
      total_size += ::_pbi::WireFormatLite::Int32Size(
          static_cast<int32_t>(data_size));
    }
    _impl_._indicator_vendor_types_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeviceFilter::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeviceFilter*>(
      &from));
}

void DeviceFilter::MergeFrom(const DeviceFilter& from) {
  DeviceFilter* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeviceFilter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_mutable_fias_ids()->MergeFrom(from._internal_fias_ids());
  _this->_internal_mutable_types()->MergeFrom(from._internal_types());
  _this->_internal_mutable_status_types()->MergeFrom(from._internal_status_types());
  _this->_internal_mutable_models()->MergeFrom(from._internal_models());
  _this->_internal_mutable_metric_point_metric_types()->MergeFrom(from._internal_metric_point_metric_types());
  _this->_internal_mutable_room_numbers()->MergeFrom(from._internal_room_numbers());
  _this->_internal_mutable_room_labels()->MergeFrom(from._internal_room_labels());
  _this->_impl_.parent_ids_.MergeFrom(from._impl_.parent_ids_);
  _this->_impl_.ids_.MergeFrom(from._impl_.ids_);
  _this->_impl_.building_ids_.MergeFrom(from._impl_.building_ids_);
  _this->_internal_mutable_serial_numbers()->MergeFrom(from._internal_serial_numbers());
  _this->_internal_mutable_metric_point_ids()->MergeFrom(from._internal_metric_point_ids());
  _this->_internal_mutable_serial_ids()->MergeFrom(from._internal_serial_ids());
  _this->_impl_.orpons_.MergeFrom(from._impl_.orpons_);
  _this->_internal_mutable_indicator_vendor_types()->MergeFrom(from._internal_indicator_vendor_types());
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeviceFilter::CopyFrom(const DeviceFilter& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeviceFilter)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceFilter::IsInitialized() const {
  return true;
}

void DeviceFilter::InternalSwap(DeviceFilter* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _internal_mutable_fias_ids()->InternalSwap(
      other->_internal_mutable_fias_ids());
  _internal_mutable_types()->InternalSwap(
      other->_internal_mutable_types());
  _internal_mutable_status_types()->InternalSwap(
      other->_internal_mutable_status_types());
  _internal_mutable_models()->InternalSwap(
      other->_internal_mutable_models());
  _internal_mutable_metric_point_metric_types()->InternalSwap(
      other->_internal_mutable_metric_point_metric_types());
  _internal_mutable_room_numbers()->InternalSwap(
      other->_internal_mutable_room_numbers());
  _internal_mutable_room_labels()->InternalSwap(
      other->_internal_mutable_room_labels());
  _impl_.parent_ids_.InternalSwap(&other->_impl_.parent_ids_);
  _impl_.ids_.InternalSwap(&other->_impl_.ids_);
  _impl_.building_ids_.InternalSwap(&other->_impl_.building_ids_);
  _internal_mutable_serial_numbers()->InternalSwap(
      other->_internal_mutable_serial_numbers());
  _internal_mutable_metric_point_ids()->InternalSwap(
      other->_internal_mutable_metric_point_ids());
  _internal_mutable_serial_ids()->InternalSwap(
      other->_internal_mutable_serial_ids());
  _impl_.orpons_.InternalSwap(&other->_impl_.orpons_);
  _internal_mutable_indicator_vendor_types()->InternalSwap(
      other->_internal_mutable_indicator_vendor_types());
}

std::string DeviceFilter::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeviceFilter";
}

// ===================================================================

class GetDeviceCountRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<GetDeviceCountRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(GetDeviceCountRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::DeviceFilter& filter(const GetDeviceCountRequest* msg);
  static void set_has_filter(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::DeviceFilter&
GetDeviceCountRequest::_Internal::filter(const GetDeviceCountRequest* msg) {
  return *msg->_impl_.filter_;
}
GetDeviceCountRequest::GetDeviceCountRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceCountRequest)
}
GetDeviceCountRequest::GetDeviceCountRequest(const GetDeviceCountRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceCountRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.filter_ = new ::keyapis::telemetry_control::v1::DeviceFilter(*from._impl_.filter_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceCountRequest)
}

inline void GetDeviceCountRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
  };
}

GetDeviceCountRequest::~GetDeviceCountRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceCountRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceCountRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.filter_;
}

void GetDeviceCountRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceCountRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceCountRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.filter_ != nullptr);
    _impl_.filter_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceCountRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceFilter filter = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_filter(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceCountRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceCountRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceFilter filter = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::filter(this),
        _Internal::filter(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceCountRequest)
  return target;
}

::size_t GetDeviceCountRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceCountRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceFilter filter = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.filter_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceCountRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceCountRequest*>(
      &from));
}

void GetDeviceCountRequest::MergeFrom(const GetDeviceCountRequest& from) {
  GetDeviceCountRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceCountRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_filter()->::keyapis::telemetry_control::v1::DeviceFilter::MergeFrom(
        from._internal_filter());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceCountRequest::CopyFrom(const GetDeviceCountRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceCountRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceCountRequest::IsInitialized() const {
  return true;
}

void GetDeviceCountRequest::InternalSwap(GetDeviceCountRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.filter_, other->_impl_.filter_);
}

std::string GetDeviceCountRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceCountRequest";
}

// ===================================================================

class GetDeviceCountResponse_Error::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceCountResponse_Error, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::DeviceFilter_ValidationError& device_filter_validation(const GetDeviceCountResponse_Error* msg);
};

const ::keyapis::telemetry_control::v1::DeviceFilter_ValidationError&
GetDeviceCountResponse_Error::_Internal::device_filter_validation(const GetDeviceCountResponse_Error* msg) {
  return *msg->_impl_.reason_.device_filter_validation_;
}
void GetDeviceCountResponse_Error::set_allocated_device_filter_validation(::keyapis::telemetry_control::v1::DeviceFilter_ValidationError* device_filter_validation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_reason();
  if (device_filter_validation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(device_filter_validation);
    if (message_arena != submessage_arena) {
      device_filter_validation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, device_filter_validation, submessage_arena);
    }
    set_has_device_filter_validation();
    _impl_.reason_.device_filter_validation_ = device_filter_validation;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error.device_filter_validation)
}
GetDeviceCountResponse_Error::GetDeviceCountResponse_Error(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
}
GetDeviceCountResponse_Error::GetDeviceCountResponse_Error(const GetDeviceCountResponse_Error& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceCountResponse_Error* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_reason();
  switch (from.reason_case()) {
    case kDeviceFilterValidation: {
      _this->_internal_mutable_device_filter_validation()->::keyapis::telemetry_control::v1::DeviceFilter_ValidationError::MergeFrom(
          from._internal_device_filter_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
}

inline void GetDeviceCountResponse_Error::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.reason_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_reason();
}

GetDeviceCountResponse_Error::~GetDeviceCountResponse_Error() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceCountResponse_Error::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_reason()) {
    clear_reason();
  }
}

void GetDeviceCountResponse_Error::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceCountResponse_Error::clear_reason() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
  switch (reason_case()) {
    case kDeviceFilterValidation: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.reason_.device_filter_validation_;
      }
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = REASON_NOT_SET;
}


void GetDeviceCountResponse_Error::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_reason();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceCountResponse_Error::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceFilter.ValidationError device_filter_validation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_filter_validation(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceCountResponse_Error::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceFilter.ValidationError device_filter_validation = 1;
  if (reason_case() == kDeviceFilterValidation) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::device_filter_validation(this),
        _Internal::device_filter_validation(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
  return target;
}

::size_t GetDeviceCountResponse_Error::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (reason_case()) {
    // .keyapis.telemetry_control.v1.DeviceFilter.ValidationError device_filter_validation = 1;
    case kDeviceFilterValidation: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.reason_.device_filter_validation_);
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceCountResponse_Error::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceCountResponse_Error*>(
      &from));
}

void GetDeviceCountResponse_Error::MergeFrom(const GetDeviceCountResponse_Error& from) {
  GetDeviceCountResponse_Error* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.reason_case()) {
    case kDeviceFilterValidation: {
      _this->_internal_mutable_device_filter_validation()->::keyapis::telemetry_control::v1::DeviceFilter_ValidationError::MergeFrom(
          from._internal_device_filter_validation());
      break;
    }
    case REASON_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceCountResponse_Error::CopyFrom(const GetDeviceCountResponse_Error& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceCountResponse.Error)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceCountResponse_Error::IsInitialized() const {
  return true;
}

void GetDeviceCountResponse_Error::InternalSwap(GetDeviceCountResponse_Error* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.reason_, other->_impl_.reason_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceCountResponse_Error::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceCountResponse.Error";
}

// ===================================================================

class GetDeviceCountResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceCountResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::GetDeviceCountResponse_Error& error(const GetDeviceCountResponse* msg);
};

const ::keyapis::telemetry_control::v1::GetDeviceCountResponse_Error&
GetDeviceCountResponse::_Internal::error(const GetDeviceCountResponse* msg) {
  return *msg->_impl_.type_.error_;
}
void GetDeviceCountResponse::set_allocated_error(::keyapis::telemetry_control::v1::GetDeviceCountResponse_Error* error) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (error) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(error);
    if (message_arena != submessage_arena) {
      error = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, error, submessage_arena);
    }
    set_has_error();
    _impl_.type_.error_ = error;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceCountResponse.error)
}
GetDeviceCountResponse::GetDeviceCountResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceCountResponse)
}
GetDeviceCountResponse::GetDeviceCountResponse(const GetDeviceCountResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceCountResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_set_data(from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::GetDeviceCountResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceCountResponse)
}

inline void GetDeviceCountResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceCountResponse::~GetDeviceCountResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceCountResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceCountResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceCountResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceCountResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceCountResponse)
  switch (type_case()) {
    case kData: {
      // No need to clear
      break;
    }
    case kError: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.error_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceCountResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceCountResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceCountResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _internal_set_data(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.GetDeviceCountResponse.Error error = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_error(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceCountResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceCountResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (type_case()) {
    case kData: {
      target = stream->EnsureSpace(target);
      target = ::_pbi::WireFormatLite::WriteInt32ToArray(
          1, this->_internal_data(), target);
      break;
    }
    case kError: {
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, _Internal::error(this),
          _Internal::error(this).GetCachedSize(), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceCountResponse)
  return target;
}

::size_t GetDeviceCountResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceCountResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // int32 data = 1;
    case kData: {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this->_internal_data());
      break;
    }
    // .keyapis.telemetry_control.v1.GetDeviceCountResponse.Error error = 2;
    case kError: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.error_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceCountResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceCountResponse*>(
      &from));
}

void GetDeviceCountResponse::MergeFrom(const GetDeviceCountResponse& from) {
  GetDeviceCountResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceCountResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_set_data(from._internal_data());
      break;
    }
    case kError: {
      _this->_internal_mutable_error()->::keyapis::telemetry_control::v1::GetDeviceCountResponse_Error::MergeFrom(
          from._internal_error());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceCountResponse::CopyFrom(const GetDeviceCountResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceCountResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceCountResponse::IsInitialized() const {
  return true;
}

void GetDeviceCountResponse::InternalSwap(GetDeviceCountResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceCountResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceCountResponse";
}

// ===================================================================

class GetDeviceIndicatorMetricPointListRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<GetDeviceIndicatorMetricPointListRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(GetDeviceIndicatorMetricPointListRequest, _impl_._has_bits_);
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter& filter(const GetDeviceIndicatorMetricPointListRequest* msg);
  static void set_has_filter(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging& paging(const GetDeviceIndicatorMetricPointListRequest* msg);
};

const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter&
GetDeviceIndicatorMetricPointListRequest::_Internal::filter(const GetDeviceIndicatorMetricPointListRequest* msg) {
  return *msg->_impl_.filter_;
}
const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging&
GetDeviceIndicatorMetricPointListRequest::_Internal::paging(const GetDeviceIndicatorMetricPointListRequest* msg) {
  return *msg->_impl_.pagination_.paging_;
}
void GetDeviceIndicatorMetricPointListRequest::set_allocated_paging(::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging* paging) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_pagination();
  if (paging) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(paging);
    if (message_arena != submessage_arena) {
      paging = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, paging, submessage_arena);
    }
    set_has_paging();
    _impl_.pagination_.paging_ = paging;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest.paging)
}
GetDeviceIndicatorMetricPointListRequest::GetDeviceIndicatorMetricPointListRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
}
GetDeviceIndicatorMetricPointListRequest::GetDeviceIndicatorMetricPointListRequest(const GetDeviceIndicatorMetricPointListRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorMetricPointListRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
    , decltype(_impl_.pagination_){}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.filter_ = new ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter(*from._impl_.filter_);
  }
  clear_has_pagination();
  switch (from.pagination_case()) {
    case kPaging: {
      _this->_internal_mutable_paging()->::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging::MergeFrom(
          from._internal_paging());
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
}

inline void GetDeviceIndicatorMetricPointListRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
    , decltype(_impl_.pagination_){}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_pagination();
}

GetDeviceIndicatorMetricPointListRequest::~GetDeviceIndicatorMetricPointListRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorMetricPointListRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.filter_;
  if (has_pagination()) {
    clear_pagination();
  }
}

void GetDeviceIndicatorMetricPointListRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorMetricPointListRequest::clear_pagination() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
  switch (pagination_case()) {
    case kPaging: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.pagination_.paging_;
      }
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = PAGINATION_NOT_SET;
}


void GetDeviceIndicatorMetricPointListRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.filter_ != nullptr);
    _impl_.filter_->Clear();
  }
  clear_pagination();
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorMetricPointListRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter filter = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_filter(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging paging = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_paging(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorMetricPointListRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter filter = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::filter(this),
        _Internal::filter(this).GetCachedSize(), target, stream);
  }

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging paging = 2;
  if (pagination_case() == kPaging) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::paging(this),
        _Internal::paging(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
  return target;
}

::size_t GetDeviceIndicatorMetricPointListRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter filter = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.filter_);
  }

  switch (pagination_case()) {
    // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging paging = 2;
    case kPaging: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.pagination_.paging_);
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorMetricPointListRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorMetricPointListRequest*>(
      &from));
}

void GetDeviceIndicatorMetricPointListRequest::MergeFrom(const GetDeviceIndicatorMetricPointListRequest& from) {
  GetDeviceIndicatorMetricPointListRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_filter()->::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter::MergeFrom(
        from._internal_filter());
  }
  switch (from.pagination_case()) {
    case kPaging: {
      _this->_internal_mutable_paging()->::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging::MergeFrom(
          from._internal_paging());
      break;
    }
    case PAGINATION_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorMetricPointListRequest::CopyFrom(const GetDeviceIndicatorMetricPointListRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorMetricPointListRequest::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorMetricPointListRequest::InternalSwap(GetDeviceIndicatorMetricPointListRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.filter_, other->_impl_.filter_);
  swap(_impl_.pagination_, other->_impl_.pagination_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceIndicatorMetricPointListRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest";
}

// ===================================================================

class DeviceIndicatorMetricPointFilter::_Internal {
 public:
};

DeviceIndicatorMetricPointFilter::DeviceIndicatorMetricPointFilter(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter)
}
DeviceIndicatorMetricPointFilter::DeviceIndicatorMetricPointFilter(const DeviceIndicatorMetricPointFilter& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  DeviceIndicatorMetricPointFilter* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.indicator_id_) { from._impl_.indicator_id_ }
    ,/* _impl_._indicator_id_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.metric_point_id_){from._impl_.metric_point_id_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter)
}

inline void DeviceIndicatorMetricPointFilter::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.indicator_id_) { arena }
    ,/* _impl_._indicator_id_cached_byte_size_ = */ { 0 }

    , decltype(_impl_.metric_point_id_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DeviceIndicatorMetricPointFilter::~DeviceIndicatorMetricPointFilter() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeviceIndicatorMetricPointFilter::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.indicator_id_.~RepeatedField();
  _internal_mutable_metric_point_id()->~RepeatedPtrField();
}

void DeviceIndicatorMetricPointFilter::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeviceIndicatorMetricPointFilter::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_mutable_indicator_id()->Clear();
  _internal_mutable_metric_point_id()->Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* DeviceIndicatorMetricPointFilter::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated int32 indicator_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_indicator_id(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::uint8_t>(tag) == 8) {
          _internal_add_indicator_id(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // repeated string metric_point_id = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_metric_point_id();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, nullptr));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeviceIndicatorMetricPointFilter::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated int32 indicator_id = 1;
  {
    int byte_size = _impl_._indicator_id_cached_byte_size_.Get();
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(1, _internal_indicator_id(),
                                                 byte_size, target);
    }
  }

  // repeated string metric_point_id = 2;
  for (int i = 0, n = this->_internal_metric_point_id_size(); i < n; ++i) {
    const auto& s = this->_internal_metric_point_id(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        s.data(), static_cast<int>(s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter.metric_point_id");
    target = stream->WriteString(2, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter)
  return target;
}

::size_t DeviceIndicatorMetricPointFilter::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated int32 indicator_id = 1;
  {
    std::size_t data_size = ::_pbi::WireFormatLite::Int32Size(
        this->_internal_indicator_id())
    ;
    _impl_._indicator_id_cached_byte_size_.Set(::_pbi::ToCachedSize(data_size));
    std::size_t tag_size = data_size == 0
        ? 0
        : 1 + ::_pbi::WireFormatLite::Int32Size(
                            static_cast<int32_t>(data_size))
    ;
    total_size += tag_size + data_size;
  }

  // repeated string metric_point_id = 2;
  total_size += 1 * ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_internal_metric_point_id().size());
  for (int i = 0, n = _internal_metric_point_id().size(); i < n; ++i) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        _internal_metric_point_id().Get(i));
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeviceIndicatorMetricPointFilter::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeviceIndicatorMetricPointFilter*>(
      &from));
}

void DeviceIndicatorMetricPointFilter::MergeFrom(const DeviceIndicatorMetricPointFilter& from) {
  DeviceIndicatorMetricPointFilter* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.indicator_id_.MergeFrom(from._impl_.indicator_id_);
  _this->_internal_mutable_metric_point_id()->MergeFrom(from._internal_metric_point_id());
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeviceIndicatorMetricPointFilter::CopyFrom(const DeviceIndicatorMetricPointFilter& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceIndicatorMetricPointFilter::IsInitialized() const {
  return true;
}

void DeviceIndicatorMetricPointFilter::InternalSwap(DeviceIndicatorMetricPointFilter* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.indicator_id_.InternalSwap(&other->_impl_.indicator_id_);
  _internal_mutable_metric_point_id()->InternalSwap(
      other->_internal_mutable_metric_point_id());
}

std::string DeviceIndicatorMetricPointFilter::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter";
}

// ===================================================================

class DeviceIndicatorMetricPointPaging::_Internal {
 public:
};

DeviceIndicatorMetricPointPaging::DeviceIndicatorMetricPointPaging(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging)
}
DeviceIndicatorMetricPointPaging::DeviceIndicatorMetricPointPaging(const DeviceIndicatorMetricPointPaging& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging)
}

inline void DeviceIndicatorMetricPointPaging::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.order_by_type_) { 0 }

    , decltype(_impl_.direction_type_) { 0 }

    , decltype(_impl_.limit_) { 0 }

    , decltype(_impl_.offset_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DeviceIndicatorMetricPointPaging::~DeviceIndicatorMetricPointPaging() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeviceIndicatorMetricPointPaging::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void DeviceIndicatorMetricPointPaging::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeviceIndicatorMetricPointPaging::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.order_by_type_, 0, static_cast<::size_t>(
      reinterpret_cast<char*>(&_impl_.offset_) -
      reinterpret_cast<char*>(&_impl_.order_by_type_)) + sizeof(_impl_.offset_));
  _internal_metadata_.Clear<std::string>();
}

const char* DeviceIndicatorMetricPointPaging::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.OrderByType order_by_type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_order_by_type(static_cast<::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging_OrderByType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.DirectionType direction_type = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
          _internal_set_direction_type(static_cast<::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging_DirectionType>(val));
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 limit = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 24)) {
          _impl_.limit_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // int32 offset = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 32)) {
          _impl_.offset_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeviceIndicatorMetricPointPaging::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.OrderByType order_by_type = 1;
  if (this->_internal_order_by_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        1, this->_internal_order_by_type(), target);
  }

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.DirectionType direction_type = 2;
  if (this->_internal_direction_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        2, this->_internal_direction_type(), target);
  }

  // int32 limit = 3;
  if (this->_internal_limit() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        3, this->_internal_limit(), target);
  }

  // int32 offset = 4;
  if (this->_internal_offset() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        4, this->_internal_offset(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging)
  return target;
}

::size_t DeviceIndicatorMetricPointPaging::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.OrderByType order_by_type = 1;
  if (this->_internal_order_by_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_order_by_type());
  }

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.DirectionType direction_type = 2;
  if (this->_internal_direction_type() != 0) {
    total_size += 1 +
                  ::_pbi::WireFormatLite::EnumSize(this->_internal_direction_type());
  }

  // int32 limit = 3;
  if (this->_internal_limit() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_limit());
  }

  // int32 offset = 4;
  if (this->_internal_offset() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_offset());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeviceIndicatorMetricPointPaging::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeviceIndicatorMetricPointPaging*>(
      &from));
}

void DeviceIndicatorMetricPointPaging::MergeFrom(const DeviceIndicatorMetricPointPaging& from) {
  DeviceIndicatorMetricPointPaging* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_order_by_type() != 0) {
    _this->_internal_set_order_by_type(from._internal_order_by_type());
  }
  if (from._internal_direction_type() != 0) {
    _this->_internal_set_direction_type(from._internal_direction_type());
  }
  if (from._internal_limit() != 0) {
    _this->_internal_set_limit(from._internal_limit());
  }
  if (from._internal_offset() != 0) {
    _this->_internal_set_offset(from._internal_offset());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeviceIndicatorMetricPointPaging::CopyFrom(const DeviceIndicatorMetricPointPaging& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceIndicatorMetricPointPaging::IsInitialized() const {
  return true;
}

void DeviceIndicatorMetricPointPaging::InternalSwap(DeviceIndicatorMetricPointPaging* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DeviceIndicatorMetricPointPaging, _impl_.offset_)
      + sizeof(DeviceIndicatorMetricPointPaging::_impl_.offset_)
      - PROTOBUF_FIELD_OFFSET(DeviceIndicatorMetricPointPaging, _impl_.order_by_type_)>(
          reinterpret_cast<char*>(&_impl_.order_by_type_),
          reinterpret_cast<char*>(&other->_impl_.order_by_type_));
}

std::string DeviceIndicatorMetricPointPaging::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging";
}

// ===================================================================

class GetDeviceIndicatorMetricPointListResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse, _impl_._oneof_case_);
  static const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint& data(const GetDeviceIndicatorMetricPointListResponse* msg);
};

const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint&
GetDeviceIndicatorMetricPointListResponse::_Internal::data(const GetDeviceIndicatorMetricPointListResponse* msg) {
  return *msg->_impl_.type_.data_;
}
void GetDeviceIndicatorMetricPointListResponse::set_allocated_data(::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint* data) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_type();
  if (data) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(data);
    if (message_arena != submessage_arena) {
      data = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, data, submessage_arena);
    }
    set_has_data();
    _impl_.type_.data_ = data;
  }
  // @@protoc_insertion_point(field_set_allocated:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse.data)
}
GetDeviceIndicatorMetricPointListResponse::GetDeviceIndicatorMetricPointListResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
}
GetDeviceIndicatorMetricPointListResponse::GetDeviceIndicatorMetricPointListResponse(const GetDeviceIndicatorMetricPointListResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorMetricPointListResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint::MergeFrom(
          from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
}

inline void GetDeviceIndicatorMetricPointListResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceIndicatorMetricPointListResponse::~GetDeviceIndicatorMetricPointListResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorMetricPointListResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceIndicatorMetricPointListResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorMetricPointListResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
  switch (type_case()) {
    case kData: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.type_.data_;
      }
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceIndicatorMetricPointListResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorMetricPointListResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorMetricPointListResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint data = 1;
  if (type_case() == kData) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::data(this),
        _Internal::data(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
  return target;
}

::size_t GetDeviceIndicatorMetricPointListResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint data = 1;
    case kData: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.type_.data_);
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorMetricPointListResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorMetricPointListResponse*>(
      &from));
}

void GetDeviceIndicatorMetricPointListResponse::MergeFrom(const GetDeviceIndicatorMetricPointListResponse& from) {
  GetDeviceIndicatorMetricPointListResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_mutable_data()->::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint::MergeFrom(
          from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorMetricPointListResponse::CopyFrom(const GetDeviceIndicatorMetricPointListResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorMetricPointListResponse::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorMetricPointListResponse::InternalSwap(GetDeviceIndicatorMetricPointListResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceIndicatorMetricPointListResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse";
}

// ===================================================================

class DeviceIndicatorMetricPoint::_Internal {
 public:
};

DeviceIndicatorMetricPoint::DeviceIndicatorMetricPoint(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint)
}
DeviceIndicatorMetricPoint::DeviceIndicatorMetricPoint(const DeviceIndicatorMetricPoint& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  DeviceIndicatorMetricPoint* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.metric_point_id_) {}

    , decltype(_impl_.indicator_id_) {}

    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  _impl_.metric_point_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.metric_point_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_metric_point_id().empty()) {
    _this->_impl_.metric_point_id_.Set(from._internal_metric_point_id(), _this->GetArenaForAllocation());
  }
  _this->_impl_.indicator_id_ = from._impl_.indicator_id_;
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint)
}

inline void DeviceIndicatorMetricPoint::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.metric_point_id_) {}

    , decltype(_impl_.indicator_id_) { 0 }

    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.metric_point_id_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        _impl_.metric_point_id_.Set("", GetArenaForAllocation());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

DeviceIndicatorMetricPoint::~DeviceIndicatorMetricPoint() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DeviceIndicatorMetricPoint::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.metric_point_id_.Destroy();
}

void DeviceIndicatorMetricPoint::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DeviceIndicatorMetricPoint::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.metric_point_id_.ClearToEmpty();
  _impl_.indicator_id_ = 0;
  _internal_metadata_.Clear<std::string>();
}

const char* DeviceIndicatorMetricPoint::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 indicator_id = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _impl_.indicator_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      // string metric_point_id = 2 [(.google.api.field_behavior) = REQUIRED];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_metric_point_id();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, nullptr));
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* DeviceIndicatorMetricPoint::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 indicator_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_indicator_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_indicator_id(), target);
  }

  // string metric_point_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_metric_point_id().empty()) {
    const std::string& _s = this->_internal_metric_point_id();
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
        _s.data(), static_cast<int>(_s.length()), ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, "keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint.metric_point_id");
    target = stream->WriteStringMaybeAliased(2, _s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint)
  return target;
}

::size_t DeviceIndicatorMetricPoint::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string metric_point_id = 2 [(.google.api.field_behavior) = REQUIRED];
  if (!this->_internal_metric_point_id().empty()) {
    total_size += 1 + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
                                    this->_internal_metric_point_id());
  }

  // int32 indicator_id = 1 [(.google.api.field_behavior) = REQUIRED];
  if (this->_internal_indicator_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
        this->_internal_indicator_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DeviceIndicatorMetricPoint::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const DeviceIndicatorMetricPoint*>(
      &from));
}

void DeviceIndicatorMetricPoint::MergeFrom(const DeviceIndicatorMetricPoint& from) {
  DeviceIndicatorMetricPoint* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_metric_point_id().empty()) {
    _this->_internal_set_metric_point_id(from._internal_metric_point_id());
  }
  if (from._internal_indicator_id() != 0) {
    _this->_internal_set_indicator_id(from._internal_indicator_id());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void DeviceIndicatorMetricPoint::CopyFrom(const DeviceIndicatorMetricPoint& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DeviceIndicatorMetricPoint::IsInitialized() const {
  return true;
}

void DeviceIndicatorMetricPoint::InternalSwap(DeviceIndicatorMetricPoint* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.metric_point_id_, lhs_arena,
                                       &other->_impl_.metric_point_id_, rhs_arena);

  swap(_impl_.indicator_id_, other->_impl_.indicator_id_);
}

std::string DeviceIndicatorMetricPoint::GetTypeName() const {
  return "keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint";
}

// ===================================================================

class GetDeviceIndicatorMetricPointCountRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<GetDeviceIndicatorMetricPointCountRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(GetDeviceIndicatorMetricPointCountRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter& filter(const GetDeviceIndicatorMetricPointCountRequest* msg);
  static void set_has_filter(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter&
GetDeviceIndicatorMetricPointCountRequest::_Internal::filter(const GetDeviceIndicatorMetricPointCountRequest* msg) {
  return *msg->_impl_.filter_;
}
GetDeviceIndicatorMetricPointCountRequest::GetDeviceIndicatorMetricPointCountRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest)
}
GetDeviceIndicatorMetricPointCountRequest::GetDeviceIndicatorMetricPointCountRequest(const GetDeviceIndicatorMetricPointCountRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorMetricPointCountRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.filter_ = new ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter(*from._impl_.filter_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest)
}

inline void GetDeviceIndicatorMetricPointCountRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.filter_){nullptr}
  };
}

GetDeviceIndicatorMetricPointCountRequest::~GetDeviceIndicatorMetricPointCountRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorMetricPointCountRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.filter_;
}

void GetDeviceIndicatorMetricPointCountRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorMetricPointCountRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.filter_ != nullptr);
    _impl_.filter_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorMetricPointCountRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter filter = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_filter(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorMetricPointCountRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter filter = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::filter(this),
        _Internal::filter(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest)
  return target;
}

::size_t GetDeviceIndicatorMetricPointCountRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter filter = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.filter_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorMetricPointCountRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorMetricPointCountRequest*>(
      &from));
}

void GetDeviceIndicatorMetricPointCountRequest::MergeFrom(const GetDeviceIndicatorMetricPointCountRequest& from) {
  GetDeviceIndicatorMetricPointCountRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_filter()->::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter::MergeFrom(
        from._internal_filter());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorMetricPointCountRequest::CopyFrom(const GetDeviceIndicatorMetricPointCountRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorMetricPointCountRequest::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorMetricPointCountRequest::InternalSwap(GetDeviceIndicatorMetricPointCountRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.filter_, other->_impl_.filter_);
}

std::string GetDeviceIndicatorMetricPointCountRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest";
}

// ===================================================================

class GetDeviceIndicatorMetricPointCountResponse::_Internal {
 public:
  static constexpr ::int32_t kOneofCaseOffset =
    PROTOBUF_FIELD_OFFSET(::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse, _impl_._oneof_case_);
};

GetDeviceIndicatorMetricPointCountResponse::GetDeviceIndicatorMetricPointCountResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
}
GetDeviceIndicatorMetricPointCountResponse::GetDeviceIndicatorMetricPointCountResponse(const GetDeviceIndicatorMetricPointCountResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  GetDeviceIndicatorMetricPointCountResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  clear_has_type();
  switch (from.type_case()) {
    case kData: {
      _this->_internal_set_data(from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
}

inline void GetDeviceIndicatorMetricPointCountResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_type();
}

GetDeviceIndicatorMetricPointCountResponse::~GetDeviceIndicatorMetricPointCountResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void GetDeviceIndicatorMetricPointCountResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_type()) {
    clear_type();
  }
}

void GetDeviceIndicatorMetricPointCountResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void GetDeviceIndicatorMetricPointCountResponse::clear_type() {
// @@protoc_insertion_point(one_of_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
  switch (type_case()) {
    case kData: {
      // No need to clear
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}


void GetDeviceIndicatorMetricPointCountResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_type();
  _internal_metadata_.Clear<std::string>();
}

const char* GetDeviceIndicatorMetricPointCountResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
          _internal_set_data(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* GetDeviceIndicatorMetricPointCountResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 data = 1;
  if (type_case() == kData) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(
        1, this->_internal_data(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
  return target;
}

::size_t GetDeviceIndicatorMetricPointCountResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (type_case()) {
    // int32 data = 1;
    case kData: {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
          this->_internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void GetDeviceIndicatorMetricPointCountResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const GetDeviceIndicatorMetricPointCountResponse*>(
      &from));
}

void GetDeviceIndicatorMetricPointCountResponse::MergeFrom(const GetDeviceIndicatorMetricPointCountResponse& from) {
  GetDeviceIndicatorMetricPointCountResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.type_case()) {
    case kData: {
      _this->_internal_set_data(from._internal_data());
      break;
    }
    case TYPE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void GetDeviceIndicatorMetricPointCountResponse::CopyFrom(const GetDeviceIndicatorMetricPointCountResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GetDeviceIndicatorMetricPointCountResponse::IsInitialized() const {
  return true;
}

void GetDeviceIndicatorMetricPointCountResponse::InternalSwap(GetDeviceIndicatorMetricPointCountResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.type_, other->_impl_.type_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

std::string GetDeviceIndicatorMetricPointCountResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse";
}

// ===================================================================

class PutDeviceIndicatorMetricPointAttachRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<PutDeviceIndicatorMetricPointAttachRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(PutDeviceIndicatorMetricPointAttachRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint& device_indicator_metric_point(const PutDeviceIndicatorMetricPointAttachRequest* msg);
  static void set_has_device_indicator_metric_point(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint&
PutDeviceIndicatorMetricPointAttachRequest::_Internal::device_indicator_metric_point(const PutDeviceIndicatorMetricPointAttachRequest* msg) {
  return *msg->_impl_.device_indicator_metric_point_;
}
PutDeviceIndicatorMetricPointAttachRequest::PutDeviceIndicatorMetricPointAttachRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest)
}
PutDeviceIndicatorMetricPointAttachRequest::PutDeviceIndicatorMetricPointAttachRequest(const PutDeviceIndicatorMetricPointAttachRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PutDeviceIndicatorMetricPointAttachRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_indicator_metric_point_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.device_indicator_metric_point_ = new ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint(*from._impl_.device_indicator_metric_point_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest)
}

inline void PutDeviceIndicatorMetricPointAttachRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_indicator_metric_point_){nullptr}
  };
}

PutDeviceIndicatorMetricPointAttachRequest::~PutDeviceIndicatorMetricPointAttachRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PutDeviceIndicatorMetricPointAttachRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.device_indicator_metric_point_;
}

void PutDeviceIndicatorMetricPointAttachRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PutDeviceIndicatorMetricPointAttachRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.device_indicator_metric_point_ != nullptr);
    _impl_.device_indicator_metric_point_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* PutDeviceIndicatorMetricPointAttachRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint device_indicator_metric_point = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_indicator_metric_point(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PutDeviceIndicatorMetricPointAttachRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint device_indicator_metric_point = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::device_indicator_metric_point(this),
        _Internal::device_indicator_metric_point(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest)
  return target;
}

::size_t PutDeviceIndicatorMetricPointAttachRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint device_indicator_metric_point = 1 [(.google.api.field_behavior) = REQUIRED];
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.device_indicator_metric_point_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PutDeviceIndicatorMetricPointAttachRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PutDeviceIndicatorMetricPointAttachRequest*>(
      &from));
}

void PutDeviceIndicatorMetricPointAttachRequest::MergeFrom(const PutDeviceIndicatorMetricPointAttachRequest& from) {
  PutDeviceIndicatorMetricPointAttachRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_device_indicator_metric_point()->::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint::MergeFrom(
        from._internal_device_indicator_metric_point());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PutDeviceIndicatorMetricPointAttachRequest::CopyFrom(const PutDeviceIndicatorMetricPointAttachRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PutDeviceIndicatorMetricPointAttachRequest::IsInitialized() const {
  return true;
}

void PutDeviceIndicatorMetricPointAttachRequest::InternalSwap(PutDeviceIndicatorMetricPointAttachRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.device_indicator_metric_point_, other->_impl_.device_indicator_metric_point_);
}

std::string PutDeviceIndicatorMetricPointAttachRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest";
}

// ===================================================================

class PutDeviceIndicatorMetricPointAttachResponse::_Internal {
 public:
};

PutDeviceIndicatorMetricPointAttachResponse::PutDeviceIndicatorMetricPointAttachResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse)
}
PutDeviceIndicatorMetricPointAttachResponse::PutDeviceIndicatorMetricPointAttachResponse(const PutDeviceIndicatorMetricPointAttachResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse)
}

inline void PutDeviceIndicatorMetricPointAttachResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PutDeviceIndicatorMetricPointAttachResponse::~PutDeviceIndicatorMetricPointAttachResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PutDeviceIndicatorMetricPointAttachResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PutDeviceIndicatorMetricPointAttachResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PutDeviceIndicatorMetricPointAttachResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PutDeviceIndicatorMetricPointAttachResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PutDeviceIndicatorMetricPointAttachResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse)
  return target;
}

::size_t PutDeviceIndicatorMetricPointAttachResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PutDeviceIndicatorMetricPointAttachResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PutDeviceIndicatorMetricPointAttachResponse*>(
      &from));
}

void PutDeviceIndicatorMetricPointAttachResponse::MergeFrom(const PutDeviceIndicatorMetricPointAttachResponse& from) {
  PutDeviceIndicatorMetricPointAttachResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PutDeviceIndicatorMetricPointAttachResponse::CopyFrom(const PutDeviceIndicatorMetricPointAttachResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PutDeviceIndicatorMetricPointAttachResponse::IsInitialized() const {
  return true;
}

void PutDeviceIndicatorMetricPointAttachResponse::InternalSwap(PutDeviceIndicatorMetricPointAttachResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PutDeviceIndicatorMetricPointAttachResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse";
}

// ===================================================================

class PutDeviceIndicatorMetricPointDetachRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<PutDeviceIndicatorMetricPointDetachRequest>()._impl_._has_bits_);
  static constexpr ::int32_t kHasBitsOffset =
    8 * PROTOBUF_FIELD_OFFSET(PutDeviceIndicatorMetricPointDetachRequest, _impl_._has_bits_);
  static const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint& device_indicator_metric_point(const PutDeviceIndicatorMetricPointDetachRequest* msg);
  static void set_has_device_indicator_metric_point(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint&
PutDeviceIndicatorMetricPointDetachRequest::_Internal::device_indicator_metric_point(const PutDeviceIndicatorMetricPointDetachRequest* msg) {
  return *msg->_impl_.device_indicator_metric_point_;
}
PutDeviceIndicatorMetricPointDetachRequest::PutDeviceIndicatorMetricPointDetachRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest)
}
PutDeviceIndicatorMetricPointDetachRequest::PutDeviceIndicatorMetricPointDetachRequest(const PutDeviceIndicatorMetricPointDetachRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite() {
  PutDeviceIndicatorMetricPointDetachRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_indicator_metric_point_){nullptr}};

  _internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_impl_.device_indicator_metric_point_ = new ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint(*from._impl_.device_indicator_metric_point_);
  }
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest)
}

inline void PutDeviceIndicatorMetricPointDetachRequest::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.device_indicator_metric_point_){nullptr}
  };
}

PutDeviceIndicatorMetricPointDetachRequest::~PutDeviceIndicatorMetricPointDetachRequest() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PutDeviceIndicatorMetricPointDetachRequest::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.device_indicator_metric_point_;
}

void PutDeviceIndicatorMetricPointDetachRequest::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PutDeviceIndicatorMetricPointDetachRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    ABSL_DCHECK(_impl_.device_indicator_metric_point_ != nullptr);
    _impl_.device_indicator_metric_point_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<std::string>();
}

const char* PutDeviceIndicatorMetricPointDetachRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint device_indicator_metric_point = 1 [(.google.api.field_behavior) = REQUIRED];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_device_indicator_metric_point(), ptr);
          CHK_(ptr);
        } else {
          goto handle_unusual;
        }
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PutDeviceIndicatorMetricPointDetachRequest::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint device_indicator_metric_point = 1 [(.google.api.field_behavior) = REQUIRED];
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::device_indicator_metric_point(this),
        _Internal::device_indicator_metric_point(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest)
  return target;
}

::size_t PutDeviceIndicatorMetricPointDetachRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint device_indicator_metric_point = 1 [(.google.api.field_behavior) = REQUIRED];
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.device_indicator_metric_point_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PutDeviceIndicatorMetricPointDetachRequest::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PutDeviceIndicatorMetricPointDetachRequest*>(
      &from));
}

void PutDeviceIndicatorMetricPointDetachRequest::MergeFrom(const PutDeviceIndicatorMetricPointDetachRequest& from) {
  PutDeviceIndicatorMetricPointDetachRequest* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
    _this->_internal_mutable_device_indicator_metric_point()->::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint::MergeFrom(
        from._internal_device_indicator_metric_point());
  }
  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PutDeviceIndicatorMetricPointDetachRequest::CopyFrom(const PutDeviceIndicatorMetricPointDetachRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PutDeviceIndicatorMetricPointDetachRequest::IsInitialized() const {
  return true;
}

void PutDeviceIndicatorMetricPointDetachRequest::InternalSwap(PutDeviceIndicatorMetricPointDetachRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.device_indicator_metric_point_, other->_impl_.device_indicator_metric_point_);
}

std::string PutDeviceIndicatorMetricPointDetachRequest::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest";
}

// ===================================================================

class PutDeviceIndicatorMetricPointDetachResponse::_Internal {
 public:
};

PutDeviceIndicatorMetricPointDetachResponse::PutDeviceIndicatorMetricPointDetachResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(arena) {
  SharedCtor(arena);
  // @@protoc_insertion_point(arena_constructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse)
}
PutDeviceIndicatorMetricPointDetachResponse::PutDeviceIndicatorMetricPointDetachResponse(const PutDeviceIndicatorMetricPointDetachResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _impl_(from._impl_) {
  _internal_metadata_.MergeFrom<std::string>(
      from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse)
}

inline void PutDeviceIndicatorMetricPointDetachResponse::SharedCtor(::_pb::Arena* arena) {
  (void)arena;
  new (&_impl_) Impl_{
      /*decltype(_impl_._cached_size_)*/{}
  };
}

PutDeviceIndicatorMetricPointDetachResponse::~PutDeviceIndicatorMetricPointDetachResponse() {
  // @@protoc_insertion_point(destructor:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<std::string>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PutDeviceIndicatorMetricPointDetachResponse::SharedDtor() {
  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
}

void PutDeviceIndicatorMetricPointDetachResponse::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PutDeviceIndicatorMetricPointDetachResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse)
  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _internal_metadata_.Clear<std::string>();
}

const char* PutDeviceIndicatorMetricPointDetachResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<std::string>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::uint8_t* PutDeviceIndicatorMetricPointDetachResponse::_InternalSerialize(
    ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse)
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = stream->WriteRaw(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).data(),
        static_cast<int>(_internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse)
  return target;
}

::size_t PutDeviceIndicatorMetricPointDetachResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse)
  ::size_t total_size = 0;

  ::uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    total_size += _internal_metadata_.unknown_fields<std::string>(::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString).size();
  }
  int cached_size = ::_pbi::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void PutDeviceIndicatorMetricPointDetachResponse::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::_pbi::DownCast<const PutDeviceIndicatorMetricPointDetachResponse*>(
      &from));
}

void PutDeviceIndicatorMetricPointDetachResponse::MergeFrom(const PutDeviceIndicatorMetricPointDetachResponse& from) {
  PutDeviceIndicatorMetricPointDetachResponse* const _this = this;
  // @@protoc_insertion_point(class_specific_merge_from_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse)
  ABSL_DCHECK_NE(&from, _this);
  ::uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_internal_metadata_.MergeFrom<std::string>(from._internal_metadata_);
}

void PutDeviceIndicatorMetricPointDetachResponse::CopyFrom(const PutDeviceIndicatorMetricPointDetachResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PutDeviceIndicatorMetricPointDetachResponse::IsInitialized() const {
  return true;
}

void PutDeviceIndicatorMetricPointDetachResponse::InternalSwap(PutDeviceIndicatorMetricPointDetachResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
}

std::string PutDeviceIndicatorMetricPointDetachResponse::GetTypeName() const {
  return "keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse";
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace v1
}  // namespace telemetry_control
}  // namespace keyapis
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeleteDeviceRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeleteDeviceRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeleteDeviceRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeleteDeviceResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeleteDeviceResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeleteDeviceResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeviceGroupPaging*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeviceGroupPaging >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeviceGroupPaging >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeviceGroupFilter*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeviceGroupFilter >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeviceGroupFilter >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeviceGroup*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeviceGroup >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeviceGroup >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse_Error*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse_Error >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse_Error >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_LimitInvalid*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_LimitInvalid >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_LimitInvalid >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_OffsetInvalid*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_OffsetInvalid >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError_OffsetInvalid >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::IndicatorPaging_ValidationError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::IndicatorPaging*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::IndicatorPaging >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::IndicatorPaging >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse_Error*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse_Error >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse_Error >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::IndicatorFilter_ValidationError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::IndicatorFilter*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::IndicatorFilter >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::IndicatorFilter >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse_Error*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse_Error >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse_Error >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest_DeviceAsyncStatus >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_CreateIndicatorsFail*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_CreateIndicatorsFail >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_CreateIndicatorsFail >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_WrongBuilding*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_WrongBuilding >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_WrongBuilding >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MetricPointNotFound*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MetricPointNotFound >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error_MetricPointNotFound >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse_Error >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceResponse_Error*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceResponse_Error >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceResponse_Error >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PostDeviceResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PostDeviceResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PostDeviceResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::Indicator_ValidationError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::Indicator_ValidationError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::Indicator_ValidationError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::Indicator*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::Indicator >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::Indicator >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::Device_ValidationError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::Device_ValidationError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::Device_ValidationError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::Device_MetricPoint*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::Device_MetricPoint >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::Device_MetricPoint >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::Device*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::Device >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::Device >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceListRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceListRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceListRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_LimitInvalid*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_LimitInvalid >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_LimitInvalid >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_OffsetInvalid*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_OffsetInvalid >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DevicePaging_ValidationError_OffsetInvalid >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DevicePaging_ValidationError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DevicePaging_ValidationError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DevicePaging_ValidationError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DevicePaging*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DevicePaging >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DevicePaging >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceListResponse_Error*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceListResponse_Error >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceListResponse_Error >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceListResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceListResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceListResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeviceFilter_ValidationError*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeviceFilter_ValidationError >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeviceFilter_ValidationError >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeviceFilter*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeviceFilter >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeviceFilter >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceCountRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceCountRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceCountRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceCountResponse_Error*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceCountResponse_Error >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceCountResponse_Error >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceCountResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceCountResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceCountResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointFilter >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPointPaging >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::DeviceIndicatorMetricPoint >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse*
Arena::CreateMaybeMessage< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse >(arena);
}
PROTOBUF_NAMESPACE_CLOSE
// @@protoc_insertion_point(global_scope)
#include "google/protobuf/port_undef.inc"
