// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: modbus_gateway.proto

#include "modbus_gateway.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/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>

PROTOBUF_PRAGMA_INIT_SEG

namespace _pb = ::PROTOBUF_NAMESPACE_ID;
namespace _pbi = _pb::internal;

namespace hc900 {
PROTOBUF_CONSTEXPR TagValue::TagValue(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.tag_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.timestamp_)*/nullptr
  , /*decltype(_impl_.quality_)*/0u
  , /*decltype(_impl_.value_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct TagValueDefaultTypeInternal {
  PROTOBUF_CONSTEXPR TagValueDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~TagValueDefaultTypeInternal() {}
  union {
    TagValue _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TagValueDefaultTypeInternal _TagValue_default_instance_;
PROTOBUF_CONSTEXPR TagMetadata::TagMetadata(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.tag_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.type_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.access_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.description_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.eu_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.address_)*/0u
  , /*decltype(_impl_.count_)*/0u
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct TagMetadataDefaultTypeInternal {
  PROTOBUF_CONSTEXPR TagMetadataDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~TagMetadataDefaultTypeInternal() {}
  union {
    TagMetadata _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TagMetadataDefaultTypeInternal _TagMetadata_default_instance_;
PROTOBUF_CONSTEXPR ReadTagsRequest::ReadTagsRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.tag_names_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ReadTagsRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ReadTagsRequestDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ReadTagsRequestDefaultTypeInternal() {}
  union {
    ReadTagsRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ReadTagsRequestDefaultTypeInternal _ReadTagsRequest_default_instance_;
PROTOBUF_CONSTEXPR ReadTagsResponse::ReadTagsResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.values_)*/{}
  , /*decltype(_impl_.from_cache_)*/false
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ReadTagsResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ReadTagsResponseDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ReadTagsResponseDefaultTypeInternal() {}
  union {
    ReadTagsResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ReadTagsResponseDefaultTypeInternal _ReadTagsResponse_default_instance_;
PROTOBUF_CONSTEXPR WriteTagRequest::WriteTagRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.tag_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.value_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct WriteTagRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR WriteTagRequestDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~WriteTagRequestDefaultTypeInternal() {}
  union {
    WriteTagRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WriteTagRequestDefaultTypeInternal _WriteTagRequest_default_instance_;
PROTOBUF_CONSTEXPR WriteTagResponse::WriteTagResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.error_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.success_)*/false
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct WriteTagResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR WriteTagResponseDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~WriteTagResponseDefaultTypeInternal() {}
  union {
    WriteTagResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 WriteTagResponseDefaultTypeInternal _WriteTagResponse_default_instance_;
PROTOBUF_CONSTEXPR StreamTagsRequest::StreamTagsRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.tag_names_)*/{}
  , /*decltype(_impl_.interval_ms_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct StreamTagsRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR StreamTagsRequestDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~StreamTagsRequestDefaultTypeInternal() {}
  union {
    StreamTagsRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 StreamTagsRequestDefaultTypeInternal _StreamTagsRequest_default_instance_;
PROTOBUF_CONSTEXPR ListTagsRequest::ListTagsRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.filter_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.limit_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ListTagsRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ListTagsRequestDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ListTagsRequestDefaultTypeInternal() {}
  union {
    ListTagsRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ListTagsRequestDefaultTypeInternal _ListTagsRequest_default_instance_;
PROTOBUF_CONSTEXPR ListTagsResponse::ListTagsResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.tags_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ListTagsResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ListTagsResponseDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ListTagsResponseDefaultTypeInternal() {}
  union {
    ListTagsResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ListTagsResponseDefaultTypeInternal _ListTagsResponse_default_instance_;
PROTOBUF_CONSTEXPR HealthCheckRequest::HealthCheckRequest(
    ::_pbi::ConstantInitialized) {}
struct HealthCheckRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR HealthCheckRequestDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~HealthCheckRequestDefaultTypeInternal() {}
  union {
    HealthCheckRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 HealthCheckRequestDefaultTypeInternal _HealthCheckRequest_default_instance_;
PROTOBUF_CONSTEXPR HealthCheckResponse::HealthCheckResponse(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.controller_ip_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.uptime_sec_)*/0
  , /*decltype(_impl_.poll_count_)*/uint64_t{0u}
  , /*decltype(_impl_.status_)*/0
  , /*decltype(_impl_.active_tags_)*/0u
  , /*decltype(_impl_.last_poll_ms_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct HealthCheckResponseDefaultTypeInternal {
  PROTOBUF_CONSTEXPR HealthCheckResponseDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~HealthCheckResponseDefaultTypeInternal() {}
  union {
    HealthCheckResponse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 HealthCheckResponseDefaultTypeInternal _HealthCheckResponse_default_instance_;
}  // namespace hc900
static ::_pb::Metadata file_level_metadata_modbus_5fgateway_2eproto[11];
static const ::_pb::EnumDescriptor* file_level_enum_descriptors_modbus_5fgateway_2eproto[1];
static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_modbus_5fgateway_2eproto = nullptr;

const uint32_t TableStruct_modbus_5fgateway_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::TagValue, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::hc900::TagValue, _impl_._oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::TagValue, _impl_.tag_name_),
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  PROTOBUF_FIELD_OFFSET(::hc900::TagValue, _impl_.quality_),
  PROTOBUF_FIELD_OFFSET(::hc900::TagValue, _impl_.timestamp_),
  PROTOBUF_FIELD_OFFSET(::hc900::TagValue, _impl_.value_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::TagMetadata, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::TagMetadata, _impl_.tag_name_),
  PROTOBUF_FIELD_OFFSET(::hc900::TagMetadata, _impl_.address_),
  PROTOBUF_FIELD_OFFSET(::hc900::TagMetadata, _impl_.count_),
  PROTOBUF_FIELD_OFFSET(::hc900::TagMetadata, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::hc900::TagMetadata, _impl_.access_),
  PROTOBUF_FIELD_OFFSET(::hc900::TagMetadata, _impl_.description_),
  PROTOBUF_FIELD_OFFSET(::hc900::TagMetadata, _impl_.eu_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::ReadTagsRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::ReadTagsRequest, _impl_.tag_names_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::ReadTagsResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::ReadTagsResponse, _impl_.values_),
  PROTOBUF_FIELD_OFFSET(::hc900::ReadTagsResponse, _impl_.from_cache_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::WriteTagRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::WriteTagRequest, _impl_.tag_name_),
  PROTOBUF_FIELD_OFFSET(::hc900::WriteTagRequest, _impl_.value_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::WriteTagResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::WriteTagResponse, _impl_.success_),
  PROTOBUF_FIELD_OFFSET(::hc900::WriteTagResponse, _impl_.error_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::StreamTagsRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::StreamTagsRequest, _impl_.interval_ms_),
  PROTOBUF_FIELD_OFFSET(::hc900::StreamTagsRequest, _impl_.tag_names_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::ListTagsRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::ListTagsRequest, _impl_.filter_),
  PROTOBUF_FIELD_OFFSET(::hc900::ListTagsRequest, _impl_.limit_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::ListTagsResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::ListTagsResponse, _impl_.tags_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::HealthCheckRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::hc900::HealthCheckResponse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::hc900::HealthCheckResponse, _impl_.status_),
  PROTOBUF_FIELD_OFFSET(::hc900::HealthCheckResponse, _impl_.uptime_sec_),
  PROTOBUF_FIELD_OFFSET(::hc900::HealthCheckResponse, _impl_.poll_count_),
  PROTOBUF_FIELD_OFFSET(::hc900::HealthCheckResponse, _impl_.last_poll_ms_),
  PROTOBUF_FIELD_OFFSET(::hc900::HealthCheckResponse, _impl_.controller_ip_),
  PROTOBUF_FIELD_OFFSET(::hc900::HealthCheckResponse, _impl_.active_tags_),
};
static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::hc900::TagValue)},
  { 12, -1, -1, sizeof(::hc900::TagMetadata)},
  { 25, -1, -1, sizeof(::hc900::ReadTagsRequest)},
  { 32, -1, -1, sizeof(::hc900::ReadTagsResponse)},
  { 40, -1, -1, sizeof(::hc900::WriteTagRequest)},
  { 48, -1, -1, sizeof(::hc900::WriteTagResponse)},
  { 56, -1, -1, sizeof(::hc900::StreamTagsRequest)},
  { 64, -1, -1, sizeof(::hc900::ListTagsRequest)},
  { 72, -1, -1, sizeof(::hc900::ListTagsResponse)},
  { 79, -1, -1, sizeof(::hc900::HealthCheckRequest)},
  { 85, -1, -1, sizeof(::hc900::HealthCheckResponse)},
};

static const ::_pb::Message* const file_default_instances[] = {
  &::hc900::_TagValue_default_instance_._instance,
  &::hc900::_TagMetadata_default_instance_._instance,
  &::hc900::_ReadTagsRequest_default_instance_._instance,
  &::hc900::_ReadTagsResponse_default_instance_._instance,
  &::hc900::_WriteTagRequest_default_instance_._instance,
  &::hc900::_WriteTagResponse_default_instance_._instance,
  &::hc900::_StreamTagsRequest_default_instance_._instance,
  &::hc900::_ListTagsRequest_default_instance_._instance,
  &::hc900::_ListTagsResponse_default_instance_._instance,
  &::hc900::_HealthCheckRequest_default_instance_._instance,
  &::hc900::_HealthCheckResponse_default_instance_._instance,
};

const char descriptor_table_protodef_modbus_5fgateway_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\024modbus_gateway.proto\022\005hc900\032\037google/pr"
  "otobuf/timestamp.proto\"\222\001\n\010TagValue\022\020\n\010t"
  "ag_name\030\001 \001(\t\022\025\n\013float32_val\030\002 \001(\002H\000\022\024\n\n"
  "uint16_val\030\003 \001(\rH\000\022\017\n\007quality\030\004 \001(\r\022-\n\tt"
  "imestamp\030\005 \001(\0132\032.google.protobuf.Timesta"
  "mpB\007\n\005value\"~\n\013TagMetadata\022\020\n\010tag_name\030\001"
  " \001(\t\022\017\n\007address\030\002 \001(\r\022\r\n\005count\030\003 \001(\r\022\014\n\004"
  "type\030\004 \001(\t\022\016\n\006access\030\005 \001(\t\022\023\n\013descriptio"
  "n\030\006 \001(\t\022\n\n\002eu\030\007 \001(\t\"$\n\017ReadTagsRequest\022\021"
  "\n\ttag_names\030\001 \003(\t\"G\n\020ReadTagsResponse\022\037\n"
  "\006values\030\001 \003(\0132\017.hc900.TagValue\022\022\n\nfrom_c"
  "ache\030\002 \001(\010\"2\n\017WriteTagRequest\022\020\n\010tag_nam"
  "e\030\001 \001(\t\022\r\n\005value\030\002 \001(\001\"2\n\020WriteTagRespon"
  "se\022\017\n\007success\030\001 \001(\010\022\r\n\005error\030\002 \001(\t\";\n\021St"
  "reamTagsRequest\022\023\n\013interval_ms\030\001 \001(\005\022\021\n\t"
  "tag_names\030\002 \003(\t\"0\n\017ListTagsRequest\022\016\n\006fi"
  "lter\030\001 \001(\t\022\r\n\005limit\030\002 \001(\005\"4\n\020ListTagsRes"
  "ponse\022 \n\004tags\030\001 \003(\0132\022.hc900.TagMetadata\""
  "\024\n\022HealthCheckRequest\"\365\001\n\023HealthCheckRes"
  "ponse\0228\n\006status\030\001 \001(\0162(.hc900.HealthChec"
  "kResponse.ServingStatus\022\022\n\nuptime_sec\030\002 "
  "\001(\001\022\022\n\npoll_count\030\003 \001(\004\022\024\n\014last_poll_ms\030"
  "\004 \001(\001\022\025\n\rcontroller_ip\030\005 \001(\t\022\023\n\013active_t"
  "ags\030\006 \001(\r\":\n\rServingStatus\022\013\n\007UNKNOWN\020\000\022"
  "\013\n\007SERVING\020\001\022\017\n\013NOT_SERVING\020\0022\307\002\n\rModbus"
  "Gateway\022;\n\010ReadTags\022\026.hc900.ReadTagsRequ"
  "est\032\027.hc900.ReadTagsResponse\022;\n\010WriteTag"
  "\022\026.hc900.WriteTagRequest\032\027.hc900.WriteTa"
  "gResponse\0229\n\nStreamTags\022\030.hc900.StreamTa"
  "gsRequest\032\017.hc900.TagValue0\001\022;\n\010ListTags"
  "\022\026.hc900.ListTagsRequest\032\027.hc900.ListTag"
  "sResponse\022D\n\013HealthCheck\022\031.hc900.HealthC"
  "heckRequest\032\032.hc900.HealthCheckResponseB"
  "\020\252\002\rHc900.Gatewayb\006proto3"
  ;
static const ::_pbi::DescriptorTable* const descriptor_table_modbus_5fgateway_2eproto_deps[1] = {
  &::descriptor_table_google_2fprotobuf_2ftimestamp_2eproto,
};
static ::_pbi::once_flag descriptor_table_modbus_5fgateway_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_modbus_5fgateway_2eproto = {
    false, false, 1345, descriptor_table_protodef_modbus_5fgateway_2eproto,
    "modbus_gateway.proto",
    &descriptor_table_modbus_5fgateway_2eproto_once, descriptor_table_modbus_5fgateway_2eproto_deps, 1, 11,
    schemas, file_default_instances, TableStruct_modbus_5fgateway_2eproto::offsets,
    file_level_metadata_modbus_5fgateway_2eproto, file_level_enum_descriptors_modbus_5fgateway_2eproto,
    file_level_service_descriptors_modbus_5fgateway_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_modbus_5fgateway_2eproto_getter() {
  return &descriptor_table_modbus_5fgateway_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::_pbi::AddDescriptorsRunner dynamic_init_dummy_modbus_5fgateway_2eproto(&descriptor_table_modbus_5fgateway_2eproto);
namespace hc900 {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* HealthCheckResponse_ServingStatus_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_modbus_5fgateway_2eproto);
  return file_level_enum_descriptors_modbus_5fgateway_2eproto[0];
}
bool HealthCheckResponse_ServingStatus_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr HealthCheckResponse_ServingStatus HealthCheckResponse::UNKNOWN;
constexpr HealthCheckResponse_ServingStatus HealthCheckResponse::SERVING;
constexpr HealthCheckResponse_ServingStatus HealthCheckResponse::NOT_SERVING;
constexpr HealthCheckResponse_ServingStatus HealthCheckResponse::ServingStatus_MIN;
constexpr HealthCheckResponse_ServingStatus HealthCheckResponse::ServingStatus_MAX;
constexpr int HealthCheckResponse::ServingStatus_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

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

class TagValue::_Internal {
 public:
  static const ::PROTOBUF_NAMESPACE_ID::Timestamp& timestamp(const TagValue* msg);
};

const ::PROTOBUF_NAMESPACE_ID::Timestamp&
TagValue::_Internal::timestamp(const TagValue* msg) {
  return *msg->_impl_.timestamp_;
}
void TagValue::clear_timestamp() {
  if (GetArenaForAllocation() == nullptr && _impl_.timestamp_ != nullptr) {
    delete _impl_.timestamp_;
  }
  _impl_.timestamp_ = nullptr;
}
TagValue::TagValue(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.TagValue)
}
TagValue::TagValue(const TagValue& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  TagValue* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_name_){}
    , decltype(_impl_.timestamp_){nullptr}
    , decltype(_impl_.quality_){}
    , decltype(_impl_.value_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.tag_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.tag_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_tag_name().empty()) {
    _this->_impl_.tag_name_.Set(from._internal_tag_name(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_timestamp()) {
    _this->_impl_.timestamp_ = new ::PROTOBUF_NAMESPACE_ID::Timestamp(*from._impl_.timestamp_);
  }
  _this->_impl_.quality_ = from._impl_.quality_;
  clear_has_value();
  switch (from.value_case()) {
    case kFloat32Val: {
      _this->_internal_set_float32_val(from._internal_float32_val());
      break;
    }
    case kUint16Val: {
      _this->_internal_set_uint16_val(from._internal_uint16_val());
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:hc900.TagValue)
}

inline void TagValue::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_name_){}
    , decltype(_impl_.timestamp_){nullptr}
    , decltype(_impl_.quality_){0u}
    , decltype(_impl_.value_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  _impl_.tag_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.tag_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  clear_has_value();
}

TagValue::~TagValue() {
  // @@protoc_insertion_point(destructor:hc900.TagValue)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void TagValue::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.tag_name_.Destroy();
  if (this != internal_default_instance()) delete _impl_.timestamp_;
  if (has_value()) {
    clear_value();
  }
}

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

void TagValue::clear_value() {
// @@protoc_insertion_point(one_of_clear_start:hc900.TagValue)
  switch (value_case()) {
    case kFloat32Val: {
      // No need to clear
      break;
    }
    case kUint16Val: {
      // No need to clear
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = VALUE_NOT_SET;
}


void TagValue::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.TagValue)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.tag_name_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && _impl_.timestamp_ != nullptr) {
    delete _impl_.timestamp_;
  }
  _impl_.timestamp_ = nullptr;
  _impl_.quality_ = 0u;
  clear_value();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* TagValue::_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 tag_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_tag_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.TagValue.tag_name"));
        } else
          goto handle_unusual;
        continue;
      // float float32_val = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _internal_set_float32_val(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // uint32 uint16_val = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _internal_set_uint16_val(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 quality = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.quality_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .google.protobuf.Timestamp timestamp = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_timestamp(), 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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // string tag_name = 1;
  if (!this->_internal_tag_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_tag_name().data(), static_cast<int>(this->_internal_tag_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.TagValue.tag_name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_tag_name(), target);
  }

  // float float32_val = 2;
  if (_internal_has_float32_val()) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_float32_val(), target);
  }

  // uint32 uint16_val = 3;
  if (_internal_has_uint16_val()) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(3, this->_internal_uint16_val(), target);
  }

  // uint32 quality = 4;
  if (this->_internal_quality() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(4, this->_internal_quality(), target);
  }

  // .google.protobuf.Timestamp timestamp = 5;
  if (this->_internal_has_timestamp()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, _Internal::timestamp(this),
        _Internal::timestamp(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.TagValue)
  return target;
}

size_t TagValue::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.TagValue)
  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 tag_name = 1;
  if (!this->_internal_tag_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_tag_name());
  }

  // .google.protobuf.Timestamp timestamp = 5;
  if (this->_internal_has_timestamp()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.timestamp_);
  }

  // uint32 quality = 4;
  if (this->_internal_quality() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_quality());
  }

  switch (value_case()) {
    // float float32_val = 2;
    case kFloat32Val: {
      total_size += 1 + 4;
      break;
    }
    // uint32 uint16_val = 3;
    case kUint16Val: {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_uint16_val());
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData TagValue::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    TagValue::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*TagValue::GetClassData() const { return &_class_data_; }


void TagValue::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<TagValue*>(&to_msg);
  auto& from = static_cast<const TagValue&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.TagValue)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_tag_name().empty()) {
    _this->_internal_set_tag_name(from._internal_tag_name());
  }
  if (from._internal_has_timestamp()) {
    _this->_internal_mutable_timestamp()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
        from._internal_timestamp());
  }
  if (from._internal_quality() != 0) {
    _this->_internal_set_quality(from._internal_quality());
  }
  switch (from.value_case()) {
    case kFloat32Val: {
      _this->_internal_set_float32_val(from._internal_float32_val());
      break;
    }
    case kUint16Val: {
      _this->_internal_set_uint16_val(from._internal_uint16_val());
      break;
    }
    case VALUE_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void TagValue::CopyFrom(const TagValue& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.TagValue)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void TagValue::InternalSwap(TagValue* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.tag_name_, lhs_arena,
      &other->_impl_.tag_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(TagValue, _impl_.quality_)
      + sizeof(TagValue::_impl_.quality_)
      - PROTOBUF_FIELD_OFFSET(TagValue, _impl_.timestamp_)>(
          reinterpret_cast<char*>(&_impl_.timestamp_),
          reinterpret_cast<char*>(&other->_impl_.timestamp_));
  swap(_impl_.value_, other->_impl_.value_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata TagValue::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[0]);
}

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

class TagMetadata::_Internal {
 public:
};

TagMetadata::TagMetadata(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.TagMetadata)
}
TagMetadata::TagMetadata(const TagMetadata& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  TagMetadata* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_name_){}
    , decltype(_impl_.type_){}
    , decltype(_impl_.access_){}
    , decltype(_impl_.description_){}
    , decltype(_impl_.eu_){}
    , decltype(_impl_.address_){}
    , decltype(_impl_.count_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.tag_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.tag_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_tag_name().empty()) {
    _this->_impl_.tag_name_.Set(from._internal_tag_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.type_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.type_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_type().empty()) {
    _this->_impl_.type_.Set(from._internal_type(), 
      _this->GetArenaForAllocation());
  }
  _impl_.access_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.access_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_access().empty()) {
    _this->_impl_.access_.Set(from._internal_access(), 
      _this->GetArenaForAllocation());
  }
  _impl_.description_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.description_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_description().empty()) {
    _this->_impl_.description_.Set(from._internal_description(), 
      _this->GetArenaForAllocation());
  }
  _impl_.eu_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.eu_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_eu().empty()) {
    _this->_impl_.eu_.Set(from._internal_eu(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.address_, &from._impl_.address_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.count_) -
    reinterpret_cast<char*>(&_impl_.address_)) + sizeof(_impl_.count_));
  // @@protoc_insertion_point(copy_constructor:hc900.TagMetadata)
}

inline void TagMetadata::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_name_){}
    , decltype(_impl_.type_){}
    , decltype(_impl_.access_){}
    , decltype(_impl_.description_){}
    , decltype(_impl_.eu_){}
    , decltype(_impl_.address_){0u}
    , decltype(_impl_.count_){0u}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.tag_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.tag_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.type_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.type_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.access_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.access_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.description_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.description_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.eu_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.eu_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

TagMetadata::~TagMetadata() {
  // @@protoc_insertion_point(destructor:hc900.TagMetadata)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void TagMetadata::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.tag_name_.Destroy();
  _impl_.type_.Destroy();
  _impl_.access_.Destroy();
  _impl_.description_.Destroy();
  _impl_.eu_.Destroy();
}

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

void TagMetadata::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.TagMetadata)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.tag_name_.ClearToEmpty();
  _impl_.type_.ClearToEmpty();
  _impl_.access_.ClearToEmpty();
  _impl_.description_.ClearToEmpty();
  _impl_.eu_.ClearToEmpty();
  ::memset(&_impl_.address_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.count_) -
      reinterpret_cast<char*>(&_impl_.address_)) + sizeof(_impl_.count_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* TagMetadata::_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 tag_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_tag_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.TagMetadata.tag_name"));
        } else
          goto handle_unusual;
        continue;
      // uint32 address = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.address_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 count = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string type = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_type();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.TagMetadata.type"));
        } else
          goto handle_unusual;
        continue;
      // string access = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_access();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.TagMetadata.access"));
        } else
          goto handle_unusual;
        continue;
      // string description = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          auto str = _internal_mutable_description();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.TagMetadata.description"));
        } else
          goto handle_unusual;
        continue;
      // string eu = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          auto str = _internal_mutable_eu();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.TagMetadata.eu"));
        } 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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // string tag_name = 1;
  if (!this->_internal_tag_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_tag_name().data(), static_cast<int>(this->_internal_tag_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.TagMetadata.tag_name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_tag_name(), target);
  }

  // uint32 address = 2;
  if (this->_internal_address() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(2, this->_internal_address(), target);
  }

  // uint32 count = 3;
  if (this->_internal_count() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(3, this->_internal_count(), target);
  }

  // string type = 4;
  if (!this->_internal_type().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_type().data(), static_cast<int>(this->_internal_type().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.TagMetadata.type");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_type(), target);
  }

  // string access = 5;
  if (!this->_internal_access().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_access().data(), static_cast<int>(this->_internal_access().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.TagMetadata.access");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_access(), target);
  }

  // string description = 6;
  if (!this->_internal_description().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_description().data(), static_cast<int>(this->_internal_description().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.TagMetadata.description");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_description(), target);
  }

  // string eu = 7;
  if (!this->_internal_eu().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_eu().data(), static_cast<int>(this->_internal_eu().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.TagMetadata.eu");
    target = stream->WriteStringMaybeAliased(
        7, this->_internal_eu(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.TagMetadata)
  return target;
}

size_t TagMetadata::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.TagMetadata)
  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 tag_name = 1;
  if (!this->_internal_tag_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_tag_name());
  }

  // string type = 4;
  if (!this->_internal_type().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_type());
  }

  // string access = 5;
  if (!this->_internal_access().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_access());
  }

  // string description = 6;
  if (!this->_internal_description().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_description());
  }

  // string eu = 7;
  if (!this->_internal_eu().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_eu());
  }

  // uint32 address = 2;
  if (this->_internal_address() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_address());
  }

  // uint32 count = 3;
  if (this->_internal_count() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_count());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData TagMetadata::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    TagMetadata::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*TagMetadata::GetClassData() const { return &_class_data_; }


void TagMetadata::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<TagMetadata*>(&to_msg);
  auto& from = static_cast<const TagMetadata&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.TagMetadata)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_tag_name().empty()) {
    _this->_internal_set_tag_name(from._internal_tag_name());
  }
  if (!from._internal_type().empty()) {
    _this->_internal_set_type(from._internal_type());
  }
  if (!from._internal_access().empty()) {
    _this->_internal_set_access(from._internal_access());
  }
  if (!from._internal_description().empty()) {
    _this->_internal_set_description(from._internal_description());
  }
  if (!from._internal_eu().empty()) {
    _this->_internal_set_eu(from._internal_eu());
  }
  if (from._internal_address() != 0) {
    _this->_internal_set_address(from._internal_address());
  }
  if (from._internal_count() != 0) {
    _this->_internal_set_count(from._internal_count());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void TagMetadata::CopyFrom(const TagMetadata& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.TagMetadata)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void TagMetadata::InternalSwap(TagMetadata* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.tag_name_, lhs_arena,
      &other->_impl_.tag_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.type_, lhs_arena,
      &other->_impl_.type_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.access_, lhs_arena,
      &other->_impl_.access_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.description_, lhs_arena,
      &other->_impl_.description_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.eu_, lhs_arena,
      &other->_impl_.eu_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(TagMetadata, _impl_.count_)
      + sizeof(TagMetadata::_impl_.count_)
      - PROTOBUF_FIELD_OFFSET(TagMetadata, _impl_.address_)>(
          reinterpret_cast<char*>(&_impl_.address_),
          reinterpret_cast<char*>(&other->_impl_.address_));
}

::PROTOBUF_NAMESPACE_ID::Metadata TagMetadata::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[1]);
}

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

class ReadTagsRequest::_Internal {
 public:
};

ReadTagsRequest::ReadTagsRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.ReadTagsRequest)
}
ReadTagsRequest::ReadTagsRequest(const ReadTagsRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ReadTagsRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_names_){from._impl_.tag_names_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:hc900.ReadTagsRequest)
}

inline void ReadTagsRequest::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_names_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

ReadTagsRequest::~ReadTagsRequest() {
  // @@protoc_insertion_point(destructor:hc900.ReadTagsRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ReadTagsRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.tag_names_.~RepeatedPtrField();
}

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

void ReadTagsRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.ReadTagsRequest)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.tag_names_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ReadTagsRequest::_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 tag_names = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_tag_names();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "hc900.ReadTagsRequest.tag_names"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // repeated string tag_names = 1;
  for (int i = 0, n = this->_internal_tag_names_size(); i < n; i++) {
    const auto& s = this->_internal_tag_names(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.ReadTagsRequest.tag_names");
    target = stream->WriteString(1, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.ReadTagsRequest)
  return target;
}

size_t ReadTagsRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.ReadTagsRequest)
  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 tag_names = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.tag_names_.size());
  for (int i = 0, n = _impl_.tag_names_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.tag_names_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ReadTagsRequest::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ReadTagsRequest::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ReadTagsRequest::GetClassData() const { return &_class_data_; }


void ReadTagsRequest::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ReadTagsRequest*>(&to_msg);
  auto& from = static_cast<const ReadTagsRequest&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.ReadTagsRequest)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.tag_names_.MergeFrom(from._impl_.tag_names_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ReadTagsRequest::CopyFrom(const ReadTagsRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.ReadTagsRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

::PROTOBUF_NAMESPACE_ID::Metadata ReadTagsRequest::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[2]);
}

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

class ReadTagsResponse::_Internal {
 public:
};

ReadTagsResponse::ReadTagsResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.ReadTagsResponse)
}
ReadTagsResponse::ReadTagsResponse(const ReadTagsResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ReadTagsResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.values_){from._impl_.values_}
    , decltype(_impl_.from_cache_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _this->_impl_.from_cache_ = from._impl_.from_cache_;
  // @@protoc_insertion_point(copy_constructor:hc900.ReadTagsResponse)
}

inline void ReadTagsResponse::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.values_){arena}
    , decltype(_impl_.from_cache_){false}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

ReadTagsResponse::~ReadTagsResponse() {
  // @@protoc_insertion_point(destructor:hc900.ReadTagsResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ReadTagsResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.values_.~RepeatedPtrField();
}

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

void ReadTagsResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.ReadTagsResponse)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.values_.Clear();
  _impl_.from_cache_ = false;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ReadTagsResponse::_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 .hc900.TagValue values = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_values(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // bool from_cache = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.from_cache_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // repeated .hc900.TagValue values = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_values_size()); i < n; i++) {
    const auto& repfield = this->_internal_values(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // bool from_cache = 2;
  if (this->_internal_from_cache() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(2, this->_internal_from_cache(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.ReadTagsResponse)
  return target;
}

size_t ReadTagsResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.ReadTagsResponse)
  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 .hc900.TagValue values = 1;
  total_size += 1UL * this->_internal_values_size();
  for (const auto& msg : this->_impl_.values_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // bool from_cache = 2;
  if (this->_internal_from_cache() != 0) {
    total_size += 1 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ReadTagsResponse::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ReadTagsResponse::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ReadTagsResponse::GetClassData() const { return &_class_data_; }


void ReadTagsResponse::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ReadTagsResponse*>(&to_msg);
  auto& from = static_cast<const ReadTagsResponse&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.ReadTagsResponse)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.values_.MergeFrom(from._impl_.values_);
  if (from._internal_from_cache() != 0) {
    _this->_internal_set_from_cache(from._internal_from_cache());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ReadTagsResponse::CopyFrom(const ReadTagsResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.ReadTagsResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void ReadTagsResponse::InternalSwap(ReadTagsResponse* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.values_.InternalSwap(&other->_impl_.values_);
  swap(_impl_.from_cache_, other->_impl_.from_cache_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ReadTagsResponse::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[3]);
}

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

class WriteTagRequest::_Internal {
 public:
};

WriteTagRequest::WriteTagRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.WriteTagRequest)
}
WriteTagRequest::WriteTagRequest(const WriteTagRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  WriteTagRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_name_){}
    , decltype(_impl_.value_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.tag_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.tag_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_tag_name().empty()) {
    _this->_impl_.tag_name_.Set(from._internal_tag_name(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.value_ = from._impl_.value_;
  // @@protoc_insertion_point(copy_constructor:hc900.WriteTagRequest)
}

inline void WriteTagRequest::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_name_){}
    , decltype(_impl_.value_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.tag_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.tag_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

WriteTagRequest::~WriteTagRequest() {
  // @@protoc_insertion_point(destructor:hc900.WriteTagRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void WriteTagRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.tag_name_.Destroy();
}

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

void WriteTagRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.WriteTagRequest)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.tag_name_.ClearToEmpty();
  _impl_.value_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* WriteTagRequest::_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 tag_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_tag_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.WriteTagRequest.tag_name"));
        } else
          goto handle_unusual;
        continue;
      // double value = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 17)) {
          _impl_.value_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
          ptr += sizeof(double);
        } 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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // string tag_name = 1;
  if (!this->_internal_tag_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_tag_name().data(), static_cast<int>(this->_internal_tag_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.WriteTagRequest.tag_name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_tag_name(), target);
  }

  // double value = 2;
  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
  double tmp_value = this->_internal_value();
  uint64_t raw_value;
  memcpy(&raw_value, &tmp_value, sizeof(tmp_value));
  if (raw_value != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteDoubleToArray(2, this->_internal_value(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.WriteTagRequest)
  return target;
}

size_t WriteTagRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.WriteTagRequest)
  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 tag_name = 1;
  if (!this->_internal_tag_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_tag_name());
  }

  // double value = 2;
  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
  double tmp_value = this->_internal_value();
  uint64_t raw_value;
  memcpy(&raw_value, &tmp_value, sizeof(tmp_value));
  if (raw_value != 0) {
    total_size += 1 + 8;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData WriteTagRequest::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    WriteTagRequest::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*WriteTagRequest::GetClassData() const { return &_class_data_; }


void WriteTagRequest::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<WriteTagRequest*>(&to_msg);
  auto& from = static_cast<const WriteTagRequest&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.WriteTagRequest)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_tag_name().empty()) {
    _this->_internal_set_tag_name(from._internal_tag_name());
  }
  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
  double tmp_value = from._internal_value();
  uint64_t raw_value;
  memcpy(&raw_value, &tmp_value, sizeof(tmp_value));
  if (raw_value != 0) {
    _this->_internal_set_value(from._internal_value());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void WriteTagRequest::CopyFrom(const WriteTagRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.WriteTagRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void WriteTagRequest::InternalSwap(WriteTagRequest* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.tag_name_, lhs_arena,
      &other->_impl_.tag_name_, rhs_arena
  );
  swap(_impl_.value_, other->_impl_.value_);
}

::PROTOBUF_NAMESPACE_ID::Metadata WriteTagRequest::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[4]);
}

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

class WriteTagResponse::_Internal {
 public:
};

WriteTagResponse::WriteTagResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.WriteTagResponse)
}
WriteTagResponse::WriteTagResponse(const WriteTagResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  WriteTagResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.error_){}
    , decltype(_impl_.success_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.error_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.error_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_error().empty()) {
    _this->_impl_.error_.Set(from._internal_error(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.success_ = from._impl_.success_;
  // @@protoc_insertion_point(copy_constructor:hc900.WriteTagResponse)
}

inline void WriteTagResponse::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.error_){}
    , decltype(_impl_.success_){false}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.error_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.error_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

WriteTagResponse::~WriteTagResponse() {
  // @@protoc_insertion_point(destructor:hc900.WriteTagResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void WriteTagResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.error_.Destroy();
}

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

void WriteTagResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.WriteTagResponse)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.error_.ClearToEmpty();
  _impl_.success_ = false;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* WriteTagResponse::_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) {
      // bool success = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.success_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string error = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_error();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.WriteTagResponse.error"));
        } 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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // bool success = 1;
  if (this->_internal_success() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(1, this->_internal_success(), target);
  }

  // string error = 2;
  if (!this->_internal_error().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_error().data(), static_cast<int>(this->_internal_error().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.WriteTagResponse.error");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_error(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.WriteTagResponse)
  return target;
}

size_t WriteTagResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.WriteTagResponse)
  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 error = 2;
  if (!this->_internal_error().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_error());
  }

  // bool success = 1;
  if (this->_internal_success() != 0) {
    total_size += 1 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData WriteTagResponse::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    WriteTagResponse::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*WriteTagResponse::GetClassData() const { return &_class_data_; }


void WriteTagResponse::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<WriteTagResponse*>(&to_msg);
  auto& from = static_cast<const WriteTagResponse&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.WriteTagResponse)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_error().empty()) {
    _this->_internal_set_error(from._internal_error());
  }
  if (from._internal_success() != 0) {
    _this->_internal_set_success(from._internal_success());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void WriteTagResponse::CopyFrom(const WriteTagResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.WriteTagResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void WriteTagResponse::InternalSwap(WriteTagResponse* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.error_, lhs_arena,
      &other->_impl_.error_, rhs_arena
  );
  swap(_impl_.success_, other->_impl_.success_);
}

::PROTOBUF_NAMESPACE_ID::Metadata WriteTagResponse::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[5]);
}

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

class StreamTagsRequest::_Internal {
 public:
};

StreamTagsRequest::StreamTagsRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.StreamTagsRequest)
}
StreamTagsRequest::StreamTagsRequest(const StreamTagsRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  StreamTagsRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_names_){from._impl_.tag_names_}
    , decltype(_impl_.interval_ms_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _this->_impl_.interval_ms_ = from._impl_.interval_ms_;
  // @@protoc_insertion_point(copy_constructor:hc900.StreamTagsRequest)
}

inline void StreamTagsRequest::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.tag_names_){arena}
    , decltype(_impl_.interval_ms_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

StreamTagsRequest::~StreamTagsRequest() {
  // @@protoc_insertion_point(destructor:hc900.StreamTagsRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void StreamTagsRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.tag_names_.~RepeatedPtrField();
}

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

void StreamTagsRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.StreamTagsRequest)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.tag_names_.Clear();
  _impl_.interval_ms_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* StreamTagsRequest::_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 interval_ms = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.interval_ms_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string tag_names = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_tag_names();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "hc900.StreamTagsRequest.tag_names"));
            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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // int32 interval_ms = 1;
  if (this->_internal_interval_ms() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_interval_ms(), target);
  }

  // repeated string tag_names = 2;
  for (int i = 0, n = this->_internal_tag_names_size(); i < n; i++) {
    const auto& s = this->_internal_tag_names(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.StreamTagsRequest.tag_names");
    target = stream->WriteString(2, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.StreamTagsRequest)
  return target;
}

size_t StreamTagsRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.StreamTagsRequest)
  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 tag_names = 2;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.tag_names_.size());
  for (int i = 0, n = _impl_.tag_names_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.tag_names_.Get(i));
  }

  // int32 interval_ms = 1;
  if (this->_internal_interval_ms() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_interval_ms());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData StreamTagsRequest::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    StreamTagsRequest::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*StreamTagsRequest::GetClassData() const { return &_class_data_; }


void StreamTagsRequest::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<StreamTagsRequest*>(&to_msg);
  auto& from = static_cast<const StreamTagsRequest&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.StreamTagsRequest)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.tag_names_.MergeFrom(from._impl_.tag_names_);
  if (from._internal_interval_ms() != 0) {
    _this->_internal_set_interval_ms(from._internal_interval_ms());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void StreamTagsRequest::CopyFrom(const StreamTagsRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.StreamTagsRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void StreamTagsRequest::InternalSwap(StreamTagsRequest* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.tag_names_.InternalSwap(&other->_impl_.tag_names_);
  swap(_impl_.interval_ms_, other->_impl_.interval_ms_);
}

::PROTOBUF_NAMESPACE_ID::Metadata StreamTagsRequest::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[6]);
}

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

class ListTagsRequest::_Internal {
 public:
};

ListTagsRequest::ListTagsRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.ListTagsRequest)
}
ListTagsRequest::ListTagsRequest(const ListTagsRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ListTagsRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.filter_){}
    , decltype(_impl_.limit_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.filter_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.filter_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_filter().empty()) {
    _this->_impl_.filter_.Set(from._internal_filter(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.limit_ = from._impl_.limit_;
  // @@protoc_insertion_point(copy_constructor:hc900.ListTagsRequest)
}

inline void ListTagsRequest::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.filter_){}
    , decltype(_impl_.limit_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.filter_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.filter_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

ListTagsRequest::~ListTagsRequest() {
  // @@protoc_insertion_point(destructor:hc900.ListTagsRequest)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ListTagsRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.filter_.Destroy();
}

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

void ListTagsRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.ListTagsRequest)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.filter_.ClearToEmpty();
  _impl_.limit_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ListTagsRequest::_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 filter = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_filter();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.ListTagsRequest.filter"));
        } else
          goto handle_unusual;
        continue;
      // int32 limit = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.limit_ = ::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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // string filter = 1;
  if (!this->_internal_filter().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_filter().data(), static_cast<int>(this->_internal_filter().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.ListTagsRequest.filter");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_filter(), target);
  }

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.ListTagsRequest)
  return target;
}

size_t ListTagsRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.ListTagsRequest)
  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 filter = 1;
  if (!this->_internal_filter().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_filter());
  }

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

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ListTagsRequest::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ListTagsRequest::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ListTagsRequest::GetClassData() const { return &_class_data_; }


void ListTagsRequest::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ListTagsRequest*>(&to_msg);
  auto& from = static_cast<const ListTagsRequest&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.ListTagsRequest)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_filter().empty()) {
    _this->_internal_set_filter(from._internal_filter());
  }
  if (from._internal_limit() != 0) {
    _this->_internal_set_limit(from._internal_limit());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ListTagsRequest::CopyFrom(const ListTagsRequest& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.ListTagsRequest)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void ListTagsRequest::InternalSwap(ListTagsRequest* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.filter_, lhs_arena,
      &other->_impl_.filter_, rhs_arena
  );
  swap(_impl_.limit_, other->_impl_.limit_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ListTagsRequest::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[7]);
}

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

class ListTagsResponse::_Internal {
 public:
};

ListTagsResponse::ListTagsResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.ListTagsResponse)
}
ListTagsResponse::ListTagsResponse(const ListTagsResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ListTagsResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.tags_){from._impl_.tags_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:hc900.ListTagsResponse)
}

inline void ListTagsResponse::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.tags_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

ListTagsResponse::~ListTagsResponse() {
  // @@protoc_insertion_point(destructor:hc900.ListTagsResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ListTagsResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.tags_.~RepeatedPtrField();
}

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

void ListTagsResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.ListTagsResponse)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.tags_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ListTagsResponse::_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 .hc900.TagMetadata tags = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_tags(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // repeated .hc900.TagMetadata tags = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_tags_size()); i < n; i++) {
    const auto& repfield = this->_internal_tags(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.ListTagsResponse)
  return target;
}

size_t ListTagsResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.ListTagsResponse)
  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 .hc900.TagMetadata tags = 1;
  total_size += 1UL * this->_internal_tags_size();
  for (const auto& msg : this->_impl_.tags_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ListTagsResponse::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ListTagsResponse::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ListTagsResponse::GetClassData() const { return &_class_data_; }


void ListTagsResponse::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ListTagsResponse*>(&to_msg);
  auto& from = static_cast<const ListTagsResponse&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.ListTagsResponse)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.tags_.MergeFrom(from._impl_.tags_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ListTagsResponse::CopyFrom(const ListTagsResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.ListTagsResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

::PROTOBUF_NAMESPACE_ID::Metadata ListTagsResponse::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[8]);
}

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

class HealthCheckRequest::_Internal {
 public:
};

HealthCheckRequest::HealthCheckRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase(arena, is_message_owned) {
  // @@protoc_insertion_point(arena_constructor:hc900.HealthCheckRequest)
}
HealthCheckRequest::HealthCheckRequest(const HealthCheckRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase() {
  HealthCheckRequest* const _this = this; (void)_this;
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:hc900.HealthCheckRequest)
}





const ::PROTOBUF_NAMESPACE_ID::Message::ClassData HealthCheckRequest::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl,
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl,
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*HealthCheckRequest::GetClassData() const { return &_class_data_; }







::PROTOBUF_NAMESPACE_ID::Metadata HealthCheckRequest::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[9]);
}

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

class HealthCheckResponse::_Internal {
 public:
};

HealthCheckResponse::HealthCheckResponse(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:hc900.HealthCheckResponse)
}
HealthCheckResponse::HealthCheckResponse(const HealthCheckResponse& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  HealthCheckResponse* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.controller_ip_){}
    , decltype(_impl_.uptime_sec_){}
    , decltype(_impl_.poll_count_){}
    , decltype(_impl_.status_){}
    , decltype(_impl_.active_tags_){}
    , decltype(_impl_.last_poll_ms_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.controller_ip_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.controller_ip_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_controller_ip().empty()) {
    _this->_impl_.controller_ip_.Set(from._internal_controller_ip(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.uptime_sec_, &from._impl_.uptime_sec_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.last_poll_ms_) -
    reinterpret_cast<char*>(&_impl_.uptime_sec_)) + sizeof(_impl_.last_poll_ms_));
  // @@protoc_insertion_point(copy_constructor:hc900.HealthCheckResponse)
}

inline void HealthCheckResponse::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.controller_ip_){}
    , decltype(_impl_.uptime_sec_){0}
    , decltype(_impl_.poll_count_){uint64_t{0u}}
    , decltype(_impl_.status_){0}
    , decltype(_impl_.active_tags_){0u}
    , decltype(_impl_.last_poll_ms_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.controller_ip_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.controller_ip_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

HealthCheckResponse::~HealthCheckResponse() {
  // @@protoc_insertion_point(destructor:hc900.HealthCheckResponse)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void HealthCheckResponse::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.controller_ip_.Destroy();
}

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

void HealthCheckResponse::Clear() {
// @@protoc_insertion_point(message_clear_start:hc900.HealthCheckResponse)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.controller_ip_.ClearToEmpty();
  ::memset(&_impl_.uptime_sec_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.last_poll_ms_) -
      reinterpret_cast<char*>(&_impl_.uptime_sec_)) + sizeof(_impl_.last_poll_ms_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* HealthCheckResponse::_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) {
      // .hc900.HealthCheckResponse.ServingStatus status = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_status(static_cast<::hc900::HealthCheckResponse_ServingStatus>(val));
        } else
          goto handle_unusual;
        continue;
      // double uptime_sec = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 17)) {
          _impl_.uptime_sec_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      // uint64 poll_count = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.poll_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // double last_poll_ms = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 33)) {
          _impl_.last_poll_ms_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      // string controller_ip = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_controller_ip();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "hc900.HealthCheckResponse.controller_ip"));
        } else
          goto handle_unusual;
        continue;
      // uint32 active_tags = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.active_tags_ = ::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<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  // .hc900.HealthCheckResponse.ServingStatus status = 1;
  if (this->_internal_status() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      1, this->_internal_status(), target);
  }

  // double uptime_sec = 2;
  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
  double tmp_uptime_sec = this->_internal_uptime_sec();
  uint64_t raw_uptime_sec;
  memcpy(&raw_uptime_sec, &tmp_uptime_sec, sizeof(tmp_uptime_sec));
  if (raw_uptime_sec != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteDoubleToArray(2, this->_internal_uptime_sec(), target);
  }

  // uint64 poll_count = 3;
  if (this->_internal_poll_count() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(3, this->_internal_poll_count(), target);
  }

  // double last_poll_ms = 4;
  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
  double tmp_last_poll_ms = this->_internal_last_poll_ms();
  uint64_t raw_last_poll_ms;
  memcpy(&raw_last_poll_ms, &tmp_last_poll_ms, sizeof(tmp_last_poll_ms));
  if (raw_last_poll_ms != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteDoubleToArray(4, this->_internal_last_poll_ms(), target);
  }

  // string controller_ip = 5;
  if (!this->_internal_controller_ip().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_controller_ip().data(), static_cast<int>(this->_internal_controller_ip().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "hc900.HealthCheckResponse.controller_ip");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_controller_ip(), target);
  }

  // uint32 active_tags = 6;
  if (this->_internal_active_tags() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(6, this->_internal_active_tags(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:hc900.HealthCheckResponse)
  return target;
}

size_t HealthCheckResponse::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:hc900.HealthCheckResponse)
  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 controller_ip = 5;
  if (!this->_internal_controller_ip().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_controller_ip());
  }

  // double uptime_sec = 2;
  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
  double tmp_uptime_sec = this->_internal_uptime_sec();
  uint64_t raw_uptime_sec;
  memcpy(&raw_uptime_sec, &tmp_uptime_sec, sizeof(tmp_uptime_sec));
  if (raw_uptime_sec != 0) {
    total_size += 1 + 8;
  }

  // uint64 poll_count = 3;
  if (this->_internal_poll_count() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_poll_count());
  }

  // .hc900.HealthCheckResponse.ServingStatus status = 1;
  if (this->_internal_status() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_status());
  }

  // uint32 active_tags = 6;
  if (this->_internal_active_tags() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_active_tags());
  }

  // double last_poll_ms = 4;
  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
  double tmp_last_poll_ms = this->_internal_last_poll_ms();
  uint64_t raw_last_poll_ms;
  memcpy(&raw_last_poll_ms, &tmp_last_poll_ms, sizeof(tmp_last_poll_ms));
  if (raw_last_poll_ms != 0) {
    total_size += 1 + 8;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData HealthCheckResponse::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    HealthCheckResponse::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*HealthCheckResponse::GetClassData() const { return &_class_data_; }


void HealthCheckResponse::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<HealthCheckResponse*>(&to_msg);
  auto& from = static_cast<const HealthCheckResponse&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:hc900.HealthCheckResponse)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_controller_ip().empty()) {
    _this->_internal_set_controller_ip(from._internal_controller_ip());
  }
  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
  double tmp_uptime_sec = from._internal_uptime_sec();
  uint64_t raw_uptime_sec;
  memcpy(&raw_uptime_sec, &tmp_uptime_sec, sizeof(tmp_uptime_sec));
  if (raw_uptime_sec != 0) {
    _this->_internal_set_uptime_sec(from._internal_uptime_sec());
  }
  if (from._internal_poll_count() != 0) {
    _this->_internal_set_poll_count(from._internal_poll_count());
  }
  if (from._internal_status() != 0) {
    _this->_internal_set_status(from._internal_status());
  }
  if (from._internal_active_tags() != 0) {
    _this->_internal_set_active_tags(from._internal_active_tags());
  }
  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
  double tmp_last_poll_ms = from._internal_last_poll_ms();
  uint64_t raw_last_poll_ms;
  memcpy(&raw_last_poll_ms, &tmp_last_poll_ms, sizeof(tmp_last_poll_ms));
  if (raw_last_poll_ms != 0) {
    _this->_internal_set_last_poll_ms(from._internal_last_poll_ms());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void HealthCheckResponse::CopyFrom(const HealthCheckResponse& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:hc900.HealthCheckResponse)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void HealthCheckResponse::InternalSwap(HealthCheckResponse* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.controller_ip_, lhs_arena,
      &other->_impl_.controller_ip_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(HealthCheckResponse, _impl_.last_poll_ms_)
      + sizeof(HealthCheckResponse::_impl_.last_poll_ms_)
      - PROTOBUF_FIELD_OFFSET(HealthCheckResponse, _impl_.uptime_sec_)>(
          reinterpret_cast<char*>(&_impl_.uptime_sec_),
          reinterpret_cast<char*>(&other->_impl_.uptime_sec_));
}

::PROTOBUF_NAMESPACE_ID::Metadata HealthCheckResponse::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_modbus_5fgateway_2eproto_getter, &descriptor_table_modbus_5fgateway_2eproto_once,
      file_level_metadata_modbus_5fgateway_2eproto[10]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace hc900
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::hc900::TagValue*
Arena::CreateMaybeMessage< ::hc900::TagValue >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::TagValue >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::TagMetadata*
Arena::CreateMaybeMessage< ::hc900::TagMetadata >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::TagMetadata >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::ReadTagsRequest*
Arena::CreateMaybeMessage< ::hc900::ReadTagsRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::ReadTagsRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::ReadTagsResponse*
Arena::CreateMaybeMessage< ::hc900::ReadTagsResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::ReadTagsResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::WriteTagRequest*
Arena::CreateMaybeMessage< ::hc900::WriteTagRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::WriteTagRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::WriteTagResponse*
Arena::CreateMaybeMessage< ::hc900::WriteTagResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::WriteTagResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::StreamTagsRequest*
Arena::CreateMaybeMessage< ::hc900::StreamTagsRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::StreamTagsRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::ListTagsRequest*
Arena::CreateMaybeMessage< ::hc900::ListTagsRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::ListTagsRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::ListTagsResponse*
Arena::CreateMaybeMessage< ::hc900::ListTagsResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::ListTagsResponse >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::HealthCheckRequest*
Arena::CreateMaybeMessage< ::hc900::HealthCheckRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::HealthCheckRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::hc900::HealthCheckResponse*
Arena::CreateMaybeMessage< ::hc900::HealthCheckResponse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::hc900::HealthCheckResponse >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
