// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/protobuf/descriptor.proto

#include <herogoogle/protobuf/descriptor.pb.h>

#include <algorithm>

#include <herogoogle/protobuf/io/coded_stream.h>
#include <herogoogle/protobuf/extension_set.h>
#include <herogoogle/protobuf/wire_format_lite.h>
#include <herogoogle/protobuf/descriptor.h>
#include <herogoogle/protobuf/generated_message_reflection.h>
#include <herogoogle/protobuf/reflection_ops.h>
#include <herogoogle/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)


PROTOBUF_PRAGMA_INIT_SEG
PROTOBUF_NAMESPACE_OPEN
constexpr FileDescriptorSet::FileDescriptorSet(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : file_(){}
struct FileDescriptorSetDefaultTypeInternal {
  constexpr FileDescriptorSetDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~FileDescriptorSetDefaultTypeInternal() {}
  union {
    FileDescriptorSet _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT FileDescriptorSetDefaultTypeInternal _FileDescriptorSet_default_instance_;
constexpr FileDescriptorProto::FileDescriptorProto(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : dependency_()
  , message_type_()
  , enum_type_()
  , service_()
  , extension_()
  , public_dependency_()
  , weak_dependency_()
  , name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , package_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , syntax_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , options_(nullptr)
  , source_code_info_(nullptr){}
struct FileDescriptorProtoDefaultTypeInternal {
  constexpr FileDescriptorProtoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~FileDescriptorProtoDefaultTypeInternal() {}
  union {
    FileDescriptorProto _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT FileDescriptorProtoDefaultTypeInternal _FileDescriptorProto_default_instance_;
constexpr DescriptorProto_ExtensionRange::DescriptorProto_ExtensionRange(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : options_(nullptr)
  , start_(0)
  , end_(0){}
struct DescriptorProto_ExtensionRangeDefaultTypeInternal {
  constexpr DescriptorProto_ExtensionRangeDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~DescriptorProto_ExtensionRangeDefaultTypeInternal() {}
  union {
    DescriptorProto_ExtensionRange _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT DescriptorProto_ExtensionRangeDefaultTypeInternal _DescriptorProto_ExtensionRange_default_instance_;
constexpr DescriptorProto_ReservedRange::DescriptorProto_ReservedRange(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : start_(0)
  , end_(0){}
struct DescriptorProto_ReservedRangeDefaultTypeInternal {
  constexpr DescriptorProto_ReservedRangeDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~DescriptorProto_ReservedRangeDefaultTypeInternal() {}
  union {
    DescriptorProto_ReservedRange _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT DescriptorProto_ReservedRangeDefaultTypeInternal _DescriptorProto_ReservedRange_default_instance_;
constexpr DescriptorProto::DescriptorProto(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : field_()
  , nested_type_()
  , enum_type_()
  , extension_range_()
  , extension_()
  , oneof_decl_()
  , reserved_range_()
  , reserved_name_()
  , name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , options_(nullptr){}
struct DescriptorProtoDefaultTypeInternal {
  constexpr DescriptorProtoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~DescriptorProtoDefaultTypeInternal() {}
  union {
    DescriptorProto _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT DescriptorProtoDefaultTypeInternal _DescriptorProto_default_instance_;
constexpr ExtensionRangeOptions::ExtensionRangeOptions(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : uninterpreted_option_(){}
struct ExtensionRangeOptionsDefaultTypeInternal {
  constexpr ExtensionRangeOptionsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~ExtensionRangeOptionsDefaultTypeInternal() {}
  union {
    ExtensionRangeOptions _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ExtensionRangeOptionsDefaultTypeInternal _ExtensionRangeOptions_default_instance_;
constexpr FieldDescriptorProto::FieldDescriptorProto(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , extendee_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , type_name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , default_value_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , json_name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , options_(nullptr)
  , number_(0)
  , oneof_index_(0)
  , proto3_optional_(false)
  , label_(1)

  , type_(1)
{}
struct FieldDescriptorProtoDefaultTypeInternal {
  constexpr FieldDescriptorProtoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~FieldDescriptorProtoDefaultTypeInternal() {}
  union {
    FieldDescriptorProto _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT FieldDescriptorProtoDefaultTypeInternal _FieldDescriptorProto_default_instance_;
constexpr OneofDescriptorProto::OneofDescriptorProto(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , options_(nullptr){}
struct OneofDescriptorProtoDefaultTypeInternal {
  constexpr OneofDescriptorProtoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~OneofDescriptorProtoDefaultTypeInternal() {}
  union {
    OneofDescriptorProto _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OneofDescriptorProtoDefaultTypeInternal _OneofDescriptorProto_default_instance_;
constexpr EnumDescriptorProto_EnumReservedRange::EnumDescriptorProto_EnumReservedRange(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : start_(0)
  , end_(0){}
struct EnumDescriptorProto_EnumReservedRangeDefaultTypeInternal {
  constexpr EnumDescriptorProto_EnumReservedRangeDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~EnumDescriptorProto_EnumReservedRangeDefaultTypeInternal() {}
  union {
    EnumDescriptorProto_EnumReservedRange _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT EnumDescriptorProto_EnumReservedRangeDefaultTypeInternal _EnumDescriptorProto_EnumReservedRange_default_instance_;
constexpr EnumDescriptorProto::EnumDescriptorProto(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : value_()
  , reserved_range_()
  , reserved_name_()
  , name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , options_(nullptr){}
struct EnumDescriptorProtoDefaultTypeInternal {
  constexpr EnumDescriptorProtoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~EnumDescriptorProtoDefaultTypeInternal() {}
  union {
    EnumDescriptorProto _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT EnumDescriptorProtoDefaultTypeInternal _EnumDescriptorProto_default_instance_;
constexpr EnumValueDescriptorProto::EnumValueDescriptorProto(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , options_(nullptr)
  , number_(0){}
struct EnumValueDescriptorProtoDefaultTypeInternal {
  constexpr EnumValueDescriptorProtoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~EnumValueDescriptorProtoDefaultTypeInternal() {}
  union {
    EnumValueDescriptorProto _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT EnumValueDescriptorProtoDefaultTypeInternal _EnumValueDescriptorProto_default_instance_;
constexpr ServiceDescriptorProto::ServiceDescriptorProto(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : method_()
  , name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , options_(nullptr){}
struct ServiceDescriptorProtoDefaultTypeInternal {
  constexpr ServiceDescriptorProtoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~ServiceDescriptorProtoDefaultTypeInternal() {}
  union {
    ServiceDescriptorProto _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ServiceDescriptorProtoDefaultTypeInternal _ServiceDescriptorProto_default_instance_;
constexpr MethodDescriptorProto::MethodDescriptorProto(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : name_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , input_type_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , output_type_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , options_(nullptr)
  , client_streaming_(false)
  , server_streaming_(false){}
struct MethodDescriptorProtoDefaultTypeInternal {
  constexpr MethodDescriptorProtoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~MethodDescriptorProtoDefaultTypeInternal() {}
  union {
    MethodDescriptorProto _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MethodDescriptorProtoDefaultTypeInternal _MethodDescriptorProto_default_instance_;
constexpr FileOptions::FileOptions(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : uninterpreted_option_()
  , java_package_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , java_outer_classname_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , go_package_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , objc_class_prefix_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , csharp_namespace_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , swift_prefix_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , php_class_prefix_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , php_namespace_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , php_metadata_namespace_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , ruby_package_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , java_multiple_files_(false)
  , java_generate_equals_and_hash_(false)
  , java_string_check_utf8_(false)
  , cc_generic_services_(false)
  , java_generic_services_(false)
  , py_generic_services_(false)
  , php_generic_services_(false)
  , deprecated_(false)
  , optimize_for_(1)

  , cc_enable_arenas_(true){}
struct FileOptionsDefaultTypeInternal {
  constexpr FileOptionsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~FileOptionsDefaultTypeInternal() {}
  union {
    FileOptions _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT FileOptionsDefaultTypeInternal _FileOptions_default_instance_;
constexpr MessageOptions::MessageOptions(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : uninterpreted_option_()
  , message_set_wire_format_(false)
  , no_standard_descriptor_accessor_(false)
  , deprecated_(false)
  , map_entry_(false){}
struct MessageOptionsDefaultTypeInternal {
  constexpr MessageOptionsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~MessageOptionsDefaultTypeInternal() {}
  union {
    MessageOptions _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MessageOptionsDefaultTypeInternal _MessageOptions_default_instance_;
constexpr FieldOptions::FieldOptions(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : uninterpreted_option_()
  , ctype_(0)

  , packed_(false)
  , lazy_(false)
  , deprecated_(false)
  , weak_(false)
  , jstype_(0)
{}
struct FieldOptionsDefaultTypeInternal {
  constexpr FieldOptionsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~FieldOptionsDefaultTypeInternal() {}
  union {
    FieldOptions _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT FieldOptionsDefaultTypeInternal _FieldOptions_default_instance_;
constexpr OneofOptions::OneofOptions(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : uninterpreted_option_(){}
struct OneofOptionsDefaultTypeInternal {
  constexpr OneofOptionsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~OneofOptionsDefaultTypeInternal() {}
  union {
    OneofOptions _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OneofOptionsDefaultTypeInternal _OneofOptions_default_instance_;
constexpr EnumOptions::EnumOptions(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : uninterpreted_option_()
  , allow_alias_(false)
  , deprecated_(false){}
struct EnumOptionsDefaultTypeInternal {
  constexpr EnumOptionsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~EnumOptionsDefaultTypeInternal() {}
  union {
    EnumOptions _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT EnumOptionsDefaultTypeInternal _EnumOptions_default_instance_;
constexpr EnumValueOptions::EnumValueOptions(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : uninterpreted_option_()
  , deprecated_(false){}
struct EnumValueOptionsDefaultTypeInternal {
  constexpr EnumValueOptionsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~EnumValueOptionsDefaultTypeInternal() {}
  union {
    EnumValueOptions _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT EnumValueOptionsDefaultTypeInternal _EnumValueOptions_default_instance_;
constexpr ServiceOptions::ServiceOptions(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : uninterpreted_option_()
  , deprecated_(false){}
struct ServiceOptionsDefaultTypeInternal {
  constexpr ServiceOptionsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~ServiceOptionsDefaultTypeInternal() {}
  union {
    ServiceOptions _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ServiceOptionsDefaultTypeInternal _ServiceOptions_default_instance_;
constexpr MethodOptions::MethodOptions(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : uninterpreted_option_()
  , deprecated_(false)
  , idempotency_level_(0)
{}
struct MethodOptionsDefaultTypeInternal {
  constexpr MethodOptionsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~MethodOptionsDefaultTypeInternal() {}
  union {
    MethodOptions _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MethodOptionsDefaultTypeInternal _MethodOptions_default_instance_;
constexpr UninterpretedOption_NamePart::UninterpretedOption_NamePart(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : name_part_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , is_extension_(false){}
struct UninterpretedOption_NamePartDefaultTypeInternal {
  constexpr UninterpretedOption_NamePartDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~UninterpretedOption_NamePartDefaultTypeInternal() {}
  union {
    UninterpretedOption_NamePart _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT UninterpretedOption_NamePartDefaultTypeInternal _UninterpretedOption_NamePart_default_instance_;
constexpr UninterpretedOption::UninterpretedOption(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : name_()
  , identifier_value_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , string_value_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , aggregate_value_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , positive_int_value_(uint64_t{0u})
  , negative_int_value_(int64_t{0})
  , double_value_(0){}
struct UninterpretedOptionDefaultTypeInternal {
  constexpr UninterpretedOptionDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~UninterpretedOptionDefaultTypeInternal() {}
  union {
    UninterpretedOption _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT UninterpretedOptionDefaultTypeInternal _UninterpretedOption_default_instance_;
constexpr SourceCodeInfo_Location::SourceCodeInfo_Location(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : path_()
  , _path_cached_byte_size_(0)
  , span_()
  , _span_cached_byte_size_(0)
  , leading_detached_comments_()
  , leading_comments_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , trailing_comments_(&::herogoogle::protobuf::internal::fixed_address_empty_string){}
struct SourceCodeInfo_LocationDefaultTypeInternal {
  constexpr SourceCodeInfo_LocationDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~SourceCodeInfo_LocationDefaultTypeInternal() {}
  union {
    SourceCodeInfo_Location _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SourceCodeInfo_LocationDefaultTypeInternal _SourceCodeInfo_Location_default_instance_;
constexpr SourceCodeInfo::SourceCodeInfo(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : location_(){}
struct SourceCodeInfoDefaultTypeInternal {
  constexpr SourceCodeInfoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~SourceCodeInfoDefaultTypeInternal() {}
  union {
    SourceCodeInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SourceCodeInfoDefaultTypeInternal _SourceCodeInfo_default_instance_;
constexpr GeneratedCodeInfo_Annotation::GeneratedCodeInfo_Annotation(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : path_()
  , _path_cached_byte_size_(0)
  , source_file_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , begin_(0)
  , end_(0){}
struct GeneratedCodeInfo_AnnotationDefaultTypeInternal {
  constexpr GeneratedCodeInfo_AnnotationDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~GeneratedCodeInfo_AnnotationDefaultTypeInternal() {}
  union {
    GeneratedCodeInfo_Annotation _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT GeneratedCodeInfo_AnnotationDefaultTypeInternal _GeneratedCodeInfo_Annotation_default_instance_;
constexpr GeneratedCodeInfo::GeneratedCodeInfo(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : annotation_(){}
struct GeneratedCodeInfoDefaultTypeInternal {
  constexpr GeneratedCodeInfoDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~GeneratedCodeInfoDefaultTypeInternal() {}
  union {
    GeneratedCodeInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT GeneratedCodeInfoDefaultTypeInternal _GeneratedCodeInfo_default_instance_;
PROTOBUF_NAMESPACE_CLOSE
static ::herogoogle::protobuf::Metadata file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[27];
static const ::herogoogle::protobuf::EnumDescriptor* file_level_enum_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto[6];
static constexpr ::herogoogle::protobuf::ServiceDescriptor const** file_level_service_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto = nullptr;

const ::herogoogle::protobuf::uint32 TableStruct_herogoogle_2fprotobuf_2fdescriptor_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorSet, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorSet, file_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, package_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, dependency_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, public_dependency_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, weak_dependency_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, message_type_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, enum_type_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, service_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, extension_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, options_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, source_code_info_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileDescriptorProto, syntax_),
  0,
  1,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  3,
  4,
  2,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto_ExtensionRange, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto_ExtensionRange, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto_ExtensionRange, start_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto_ExtensionRange, end_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto_ExtensionRange, options_),
  1,
  2,
  0,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto_ReservedRange, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto_ReservedRange, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto_ReservedRange, start_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto_ReservedRange, end_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, field_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, extension_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, nested_type_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, enum_type_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, extension_range_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, oneof_decl_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, options_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, reserved_range_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::DescriptorProto, reserved_name_),
  0,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  1,
  ~0u,
  ~0u,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ExtensionRangeOptions, _internal_metadata_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ExtensionRangeOptions, _extensions_),
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ExtensionRangeOptions, uninterpreted_option_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, number_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, label_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, type_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, type_name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, extendee_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, default_value_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, oneof_index_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, json_name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, options_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldDescriptorProto, proto3_optional_),
  0,
  6,
  9,
  10,
  2,
  1,
  3,
  7,
  4,
  5,
  8,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::OneofDescriptorProto, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::OneofDescriptorProto, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::OneofDescriptorProto, name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::OneofDescriptorProto, options_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto_EnumReservedRange, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto_EnumReservedRange, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto_EnumReservedRange, start_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto_EnumReservedRange, end_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto, name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto, value_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto, options_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto, reserved_range_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumDescriptorProto, reserved_name_),
  0,
  ~0u,
  1,
  ~0u,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueDescriptorProto, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueDescriptorProto, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueDescriptorProto, name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueDescriptorProto, number_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueDescriptorProto, options_),
  0,
  2,
  1,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceDescriptorProto, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceDescriptorProto, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceDescriptorProto, name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceDescriptorProto, method_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceDescriptorProto, options_),
  0,
  ~0u,
  1,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodDescriptorProto, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodDescriptorProto, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodDescriptorProto, name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodDescriptorProto, input_type_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodDescriptorProto, output_type_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodDescriptorProto, options_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodDescriptorProto, client_streaming_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodDescriptorProto, server_streaming_),
  0,
  1,
  2,
  3,
  4,
  5,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, _internal_metadata_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, _extensions_),
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, java_package_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, java_outer_classname_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, java_multiple_files_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, java_generate_equals_and_hash_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, java_string_check_utf8_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, optimize_for_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, go_package_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, cc_generic_services_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, java_generic_services_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, py_generic_services_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, php_generic_services_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, deprecated_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, cc_enable_arenas_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, objc_class_prefix_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, csharp_namespace_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, swift_prefix_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, php_class_prefix_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, php_namespace_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, php_metadata_namespace_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, ruby_package_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FileOptions, uninterpreted_option_),
  0,
  1,
  10,
  11,
  12,
  18,
  2,
  13,
  14,
  15,
  16,
  17,
  19,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MessageOptions, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MessageOptions, _internal_metadata_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MessageOptions, _extensions_),
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MessageOptions, message_set_wire_format_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MessageOptions, no_standard_descriptor_accessor_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MessageOptions, deprecated_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MessageOptions, map_entry_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MessageOptions, uninterpreted_option_),
  0,
  1,
  2,
  3,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, _internal_metadata_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, _extensions_),
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, ctype_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, packed_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, jstype_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, lazy_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, deprecated_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, weak_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::FieldOptions, uninterpreted_option_),
  0,
  1,
  5,
  2,
  3,
  4,
  ~0u,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::OneofOptions, _internal_metadata_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::OneofOptions, _extensions_),
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::OneofOptions, uninterpreted_option_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumOptions, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumOptions, _internal_metadata_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumOptions, _extensions_),
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumOptions, allow_alias_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumOptions, deprecated_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumOptions, uninterpreted_option_),
  0,
  1,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueOptions, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueOptions, _internal_metadata_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueOptions, _extensions_),
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueOptions, deprecated_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::EnumValueOptions, uninterpreted_option_),
  0,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceOptions, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceOptions, _internal_metadata_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceOptions, _extensions_),
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceOptions, deprecated_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::ServiceOptions, uninterpreted_option_),
  0,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodOptions, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodOptions, _internal_metadata_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodOptions, _extensions_),
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodOptions, deprecated_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodOptions, idempotency_level_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::MethodOptions, uninterpreted_option_),
  0,
  1,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption_NamePart, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption_NamePart, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption_NamePart, name_part_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption_NamePart, is_extension_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption, name_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption, identifier_value_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption, positive_int_value_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption, negative_int_value_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption, double_value_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption, string_value_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::UninterpretedOption, aggregate_value_),
  ~0u,
  0,
  3,
  4,
  5,
  1,
  2,
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::SourceCodeInfo_Location, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::SourceCodeInfo_Location, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::SourceCodeInfo_Location, path_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::SourceCodeInfo_Location, span_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::SourceCodeInfo_Location, leading_comments_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::SourceCodeInfo_Location, trailing_comments_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::SourceCodeInfo_Location, leading_detached_comments_),
  ~0u,
  ~0u,
  0,
  1,
  ~0u,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::SourceCodeInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::SourceCodeInfo, location_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::GeneratedCodeInfo_Annotation, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::GeneratedCodeInfo_Annotation, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::GeneratedCodeInfo_Annotation, path_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::GeneratedCodeInfo_Annotation, source_file_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::GeneratedCodeInfo_Annotation, begin_),
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::GeneratedCodeInfo_Annotation, end_),
  ~0u,
  0,
  1,
  2,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::GeneratedCodeInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::herogoogle::protobuf::GeneratedCodeInfo, annotation_),
};
static const ::herogoogle::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::herogoogle::protobuf::FileDescriptorSet)},
  { 7, 25, -1, sizeof(::herogoogle::protobuf::FileDescriptorProto)},
  { 37, 46, -1, sizeof(::herogoogle::protobuf::DescriptorProto_ExtensionRange)},
  { 49, 57, -1, sizeof(::herogoogle::protobuf::DescriptorProto_ReservedRange)},
  { 59, 75, -1, sizeof(::herogoogle::protobuf::DescriptorProto)},
  { 85, -1, -1, sizeof(::herogoogle::protobuf::ExtensionRangeOptions)},
  { 92, 109, -1, sizeof(::herogoogle::protobuf::FieldDescriptorProto)},
  { 120, 128, -1, sizeof(::herogoogle::protobuf::OneofDescriptorProto)},
  { 130, 138, -1, sizeof(::herogoogle::protobuf::EnumDescriptorProto_EnumReservedRange)},
  { 140, 151, -1, sizeof(::herogoogle::protobuf::EnumDescriptorProto)},
  { 156, 165, -1, sizeof(::herogoogle::protobuf::EnumValueDescriptorProto)},
  { 168, 177, -1, sizeof(::herogoogle::protobuf::ServiceDescriptorProto)},
  { 180, 192, -1, sizeof(::herogoogle::protobuf::MethodDescriptorProto)},
  { 198, 225, -1, sizeof(::herogoogle::protobuf::FileOptions)},
  { 246, 257, -1, sizeof(::herogoogle::protobuf::MessageOptions)},
  { 262, 275, -1, sizeof(::herogoogle::protobuf::FieldOptions)},
  { 282, -1, -1, sizeof(::herogoogle::protobuf::OneofOptions)},
  { 289, 298, -1, sizeof(::herogoogle::protobuf::EnumOptions)},
  { 301, 309, -1, sizeof(::herogoogle::protobuf::EnumValueOptions)},
  { 311, 319, -1, sizeof(::herogoogle::protobuf::ServiceOptions)},
  { 321, 330, -1, sizeof(::herogoogle::protobuf::MethodOptions)},
  { 333, 341, -1, sizeof(::herogoogle::protobuf::UninterpretedOption_NamePart)},
  { 343, 356, -1, sizeof(::herogoogle::protobuf::UninterpretedOption)},
  { 363, 374, -1, sizeof(::herogoogle::protobuf::SourceCodeInfo_Location)},
  { 379, -1, -1, sizeof(::herogoogle::protobuf::SourceCodeInfo)},
  { 386, 396, -1, sizeof(::herogoogle::protobuf::GeneratedCodeInfo_Annotation)},
  { 400, -1, -1, sizeof(::herogoogle::protobuf::GeneratedCodeInfo)},
};

static ::herogoogle::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_FileDescriptorSet_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_FileDescriptorProto_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_DescriptorProto_ExtensionRange_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_DescriptorProto_ReservedRange_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_DescriptorProto_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_ExtensionRangeOptions_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_FieldDescriptorProto_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_OneofDescriptorProto_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_EnumDescriptorProto_EnumReservedRange_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_EnumDescriptorProto_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_EnumValueDescriptorProto_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_ServiceDescriptorProto_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_MethodDescriptorProto_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_FileOptions_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_MessageOptions_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_FieldOptions_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_OneofOptions_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_EnumOptions_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_EnumValueOptions_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_ServiceOptions_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_MethodOptions_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_UninterpretedOption_NamePart_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_UninterpretedOption_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_SourceCodeInfo_Location_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_SourceCodeInfo_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_GeneratedCodeInfo_Annotation_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::herogoogle::protobuf::_GeneratedCodeInfo_default_instance_),
};
#ifdef _MSC_VER
#  pragma warning(disable : 4125)
#endif  /* _MSC_VER */
const char descriptor_table_protodef_herogoogle_2fprotobuf_2fdescriptor_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n google/protobuf/descriptor.proto\022\017goog"
  "le.protobuf\"G\n\021FileDescriptorSet\0222\n\004file"
  "\030\001 \003(\0132$.google.protobuf.FileDescriptorP"
  "roto\"\333\003\n\023FileDescriptorProto\022\014\n\004name\030\001 \001"
  "(\t\022\017\n\007package\030\002 \001(\t\022\022\n\ndependency\030\003 \003(\t\022"
  "\031\n\021public_dependency\030\n \003(\005\022\027\n\017weak_depen"
  "dency\030\013 \003(\005\0226\n\014message_type\030\004 \003(\0132 .goog"
  "le.protobuf.DescriptorProto\0227\n\tenum_type"
  "\030\005 \003(\0132$.google.protobuf.EnumDescriptorP"
  "roto\0228\n\007service\030\006 \003(\0132\'.google.protobuf."
  "ServiceDescriptorProto\0228\n\textension\030\007 \003("
  "\0132%.google.protobuf.FieldDescriptorProto"
  "\022-\n\007options\030\010 \001(\0132\034.google.protobuf.File"
  "Options\0229\n\020source_code_info\030\t \001(\0132\037.goog"
  "le.protobuf.SourceCodeInfo\022\016\n\006syntax\030\014 \001"
  "(\t\"\251\005\n\017DescriptorProto\022\014\n\004name\030\001 \001(\t\0224\n\005"
  "field\030\002 \003(\0132%.google.protobuf.FieldDescr"
  "iptorProto\0228\n\textension\030\006 \003(\0132%.google.p"
  "rotobuf.FieldDescriptorProto\0225\n\013nested_t"
  "ype\030\003 \003(\0132 .google.protobuf.DescriptorPr"
  "oto\0227\n\tenum_type\030\004 \003(\0132$.google.protobuf"
  ".EnumDescriptorProto\022H\n\017extension_range\030"
  "\005 \003(\0132/.google.protobuf.DescriptorProto."
  "ExtensionRange\0229\n\noneof_decl\030\010 \003(\0132%.goo"
  "gle.protobuf.OneofDescriptorProto\0220\n\007opt"
  "ions\030\007 \001(\0132\037.google.protobuf.MessageOpti"
  "ons\022F\n\016reserved_range\030\t \003(\0132..google.pro"
  "tobuf.DescriptorProto.ReservedRange\022\025\n\rr"
  "eserved_name\030\n \003(\t\032e\n\016ExtensionRange\022\r\n\005"
  "start\030\001 \001(\005\022\013\n\003end\030\002 \001(\005\0227\n\007options\030\003 \001("
  "\0132&.google.protobuf.ExtensionRangeOption"
  "s\032+\n\rReservedRange\022\r\n\005start\030\001 \001(\005\022\013\n\003end"
  "\030\002 \001(\005\"g\n\025ExtensionRangeOptions\022C\n\024unint"
  "erpreted_option\030\347\007 \003(\0132$.google.protobuf"
  ".UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"\325\005\n\024Fiel"
  "dDescriptorProto\022\014\n\004name\030\001 \001(\t\022\016\n\006number"
  "\030\003 \001(\005\022:\n\005label\030\004 \001(\0162+.google.protobuf."
  "FieldDescriptorProto.Label\0228\n\004type\030\005 \001(\016"
  "2*.google.protobuf.FieldDescriptorProto."
  "Type\022\021\n\ttype_name\030\006 \001(\t\022\020\n\010extendee\030\002 \001("
  "\t\022\025\n\rdefault_value\030\007 \001(\t\022\023\n\013oneof_index\030"
  "\t \001(\005\022\021\n\tjson_name\030\n \001(\t\022.\n\007options\030\010 \001("
  "\0132\035.google.protobuf.FieldOptions\022\027\n\017prot"
  "o3_optional\030\021 \001(\010\"\266\002\n\004Type\022\017\n\013TYPE_DOUBL"
  "E\020\001\022\016\n\nTYPE_FLOAT\020\002\022\016\n\nTYPE_INT64\020\003\022\017\n\013T"
  "YPE_UINT64\020\004\022\016\n\nTYPE_INT32\020\005\022\020\n\014TYPE_FIX"
  "ED64\020\006\022\020\n\014TYPE_FIXED32\020\007\022\r\n\tTYPE_BOOL\020\010\022"
  "\017\n\013TYPE_STRING\020\t\022\016\n\nTYPE_GROUP\020\n\022\020\n\014TYPE"
  "_MESSAGE\020\013\022\016\n\nTYPE_BYTES\020\014\022\017\n\013TYPE_UINT3"
  "2\020\r\022\r\n\tTYPE_ENUM\020\016\022\021\n\rTYPE_SFIXED32\020\017\022\021\n"
  "\rTYPE_SFIXED64\020\020\022\017\n\013TYPE_SINT32\020\021\022\017\n\013TYP"
  "E_SINT64\020\022\"C\n\005Label\022\022\n\016LABEL_OPTIONAL\020\001\022"
  "\022\n\016LABEL_REQUIRED\020\002\022\022\n\016LABEL_REPEATED\020\003\""
  "T\n\024OneofDescriptorProto\022\014\n\004name\030\001 \001(\t\022.\n"
  "\007options\030\002 \001(\0132\035.google.protobuf.OneofOp"
  "tions\"\244\002\n\023EnumDescriptorProto\022\014\n\004name\030\001 "
  "\001(\t\0228\n\005value\030\002 \003(\0132).google.protobuf.Enu"
  "mValueDescriptorProto\022-\n\007options\030\003 \001(\0132\034"
  ".google.protobuf.EnumOptions\022N\n\016reserved"
  "_range\030\004 \003(\01326.google.protobuf.EnumDescr"
  "iptorProto.EnumReservedRange\022\025\n\rreserved"
  "_name\030\005 \003(\t\032/\n\021EnumReservedRange\022\r\n\005star"
  "t\030\001 \001(\005\022\013\n\003end\030\002 \001(\005\"l\n\030EnumValueDescrip"
  "torProto\022\014\n\004name\030\001 \001(\t\022\016\n\006number\030\002 \001(\005\0222"
  "\n\007options\030\003 \001(\0132!.google.protobuf.EnumVa"
  "lueOptions\"\220\001\n\026ServiceDescriptorProto\022\014\n"
  "\004name\030\001 \001(\t\0226\n\006method\030\002 \003(\0132&.google.pro"
  "tobuf.MethodDescriptorProto\0220\n\007options\030\003"
  " \001(\0132\037.google.protobuf.ServiceOptions\"\301\001"
  "\n\025MethodDescriptorProto\022\014\n\004name\030\001 \001(\t\022\022\n"
  "\ninput_type\030\002 \001(\t\022\023\n\013output_type\030\003 \001(\t\022/"
  "\n\007options\030\004 \001(\0132\036.google.protobuf.Method"
  "Options\022\037\n\020client_streaming\030\005 \001(\010:\005false"
  "\022\037\n\020server_streaming\030\006 \001(\010:\005false\"\245\006\n\013Fi"
  "leOptions\022\024\n\014java_package\030\001 \001(\t\022\034\n\024java_"
  "outer_classname\030\010 \001(\t\022\"\n\023java_multiple_f"
  "iles\030\n \001(\010:\005false\022)\n\035java_generate_equal"
  "s_and_hash\030\024 \001(\010B\002\030\001\022%\n\026java_string_chec"
  "k_utf8\030\033 \001(\010:\005false\022F\n\014optimize_for\030\t \001("
  "\0162).google.protobuf.FileOptions.Optimize"
  "Mode:\005SPEED\022\022\n\ngo_package\030\013 \001(\t\022\"\n\023cc_ge"
  "neric_services\030\020 \001(\010:\005false\022$\n\025java_gene"
  "ric_services\030\021 \001(\010:\005false\022\"\n\023py_generic_"
  "services\030\022 \001(\010:\005false\022#\n\024php_generic_ser"
  "vices\030* \001(\010:\005false\022\031\n\ndeprecated\030\027 \001(\010:\005"
  "false\022\036\n\020cc_enable_arenas\030\037 \001(\010:\004true\022\031\n"
  "\021objc_class_prefix\030$ \001(\t\022\030\n\020csharp_names"
  "pace\030% \001(\t\022\024\n\014swift_prefix\030\' \001(\t\022\030\n\020php_"
  "class_prefix\030( \001(\t\022\025\n\rphp_namespace\030) \001("
  "\t\022\036\n\026php_metadata_namespace\030, \001(\t\022\024\n\014rub"
  "y_package\030- \001(\t\022C\n\024uninterpreted_option\030"
  "\347\007 \003(\0132$.google.protobuf.UninterpretedOp"
  "tion\":\n\014OptimizeMode\022\t\n\005SPEED\020\001\022\r\n\tCODE_"
  "SIZE\020\002\022\020\n\014LITE_RUNTIME\020\003*\t\010\350\007\020\200\200\200\200\002J\004\010&\020"
  "\'\"\204\002\n\016MessageOptions\022&\n\027message_set_wire"
  "_format\030\001 \001(\010:\005false\022.\n\037no_standard_desc"
  "riptor_accessor\030\002 \001(\010:\005false\022\031\n\ndeprecat"
  "ed\030\003 \001(\010:\005false\022\021\n\tmap_entry\030\007 \001(\010\022C\n\024un"
  "interpreted_option\030\347\007 \003(\0132$.google.proto"
  "buf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002J\004\010\004\020\005"
  "J\004\010\005\020\006J\004\010\006\020\007J\004\010\010\020\tJ\004\010\t\020\n\"\236\003\n\014FieldOption"
  "s\022:\n\005ctype\030\001 \001(\0162#.google.protobuf.Field"
  "Options.CType:\006STRING\022\016\n\006packed\030\002 \001(\010\022\?\n"
  "\006jstype\030\006 \001(\0162$.google.protobuf.FieldOpt"
  "ions.JSType:\tJS_NORMAL\022\023\n\004lazy\030\005 \001(\010:\005fa"
  "lse\022\031\n\ndeprecated\030\003 \001(\010:\005false\022\023\n\004weak\030\n"
  " \001(\010:\005false\022C\n\024uninterpreted_option\030\347\007 \003"
  "(\0132$.google.protobuf.UninterpretedOption"
  "\"/\n\005CType\022\n\n\006STRING\020\000\022\010\n\004CORD\020\001\022\020\n\014STRIN"
  "G_PIECE\020\002\"5\n\006JSType\022\r\n\tJS_NORMAL\020\000\022\r\n\tJS"
  "_STRING\020\001\022\r\n\tJS_NUMBER\020\002*\t\010\350\007\020\200\200\200\200\002J\004\010\004\020"
  "\005\"^\n\014OneofOptions\022C\n\024uninterpreted_optio"
  "n\030\347\007 \003(\0132$.google.protobuf.Uninterpreted"
  "Option*\t\010\350\007\020\200\200\200\200\002\"\223\001\n\013EnumOptions\022\023\n\013all"
  "ow_alias\030\002 \001(\010\022\031\n\ndeprecated\030\003 \001(\010:\005fals"
  "e\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.googl"
  "e.protobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200"
  "\002J\004\010\005\020\006\"}\n\020EnumValueOptions\022\031\n\ndeprecate"
  "d\030\001 \001(\010:\005false\022C\n\024uninterpreted_option\030\347"
  "\007 \003(\0132$.google.protobuf.UninterpretedOpt"
  "ion*\t\010\350\007\020\200\200\200\200\002\"{\n\016ServiceOptions\022\031\n\ndepr"
  "ecated\030! \001(\010:\005false\022C\n\024uninterpreted_opt"
  "ion\030\347\007 \003(\0132$.google.protobuf.Uninterpret"
  "edOption*\t\010\350\007\020\200\200\200\200\002\"\255\002\n\rMethodOptions\022\031\n"
  "\ndeprecated\030! \001(\010:\005false\022_\n\021idempotency_"
  "level\030\" \001(\0162/.google.protobuf.MethodOpti"
  "ons.IdempotencyLevel:\023IDEMPOTENCY_UNKNOW"
  "N\022C\n\024uninterpreted_option\030\347\007 \003(\0132$.googl"
  "e.protobuf.UninterpretedOption\"P\n\020Idempo"
  "tencyLevel\022\027\n\023IDEMPOTENCY_UNKNOWN\020\000\022\023\n\017N"
  "O_SIDE_EFFECTS\020\001\022\016\n\nIDEMPOTENT\020\002*\t\010\350\007\020\200\200"
  "\200\200\002\"\236\002\n\023UninterpretedOption\022;\n\004name\030\002 \003("
  "\0132-.google.protobuf.UninterpretedOption."
  "NamePart\022\030\n\020identifier_value\030\003 \001(\t\022\032\n\022po"
  "sitive_int_value\030\004 \001(\004\022\032\n\022negative_int_v"
  "alue\030\005 \001(\003\022\024\n\014double_value\030\006 \001(\001\022\024\n\014stri"
  "ng_value\030\007 \001(\014\022\027\n\017aggregate_value\030\010 \001(\t\032"
  "3\n\010NamePart\022\021\n\tname_part\030\001 \002(\t\022\024\n\014is_ext"
  "ension\030\002 \002(\010\"\325\001\n\016SourceCodeInfo\022:\n\010locat"
  "ion\030\001 \003(\0132(.google.protobuf.SourceCodeIn"
  "fo.Location\032\206\001\n\010Location\022\020\n\004path\030\001 \003(\005B\002"
  "\020\001\022\020\n\004span\030\002 \003(\005B\002\020\001\022\030\n\020leading_comments"
  "\030\003 \001(\t\022\031\n\021trailing_comments\030\004 \001(\t\022!\n\031lea"
  "ding_detached_comments\030\006 \003(\t\"\247\001\n\021Generat"
  "edCodeInfo\022A\n\nannotation\030\001 \003(\0132-.google."
  "protobuf.GeneratedCodeInfo.Annotation\032O\n"
  "\nAnnotation\022\020\n\004path\030\001 \003(\005B\002\020\001\022\023\n\013source_"
  "file\030\002 \001(\t\022\r\n\005begin\030\003 \001(\005\022\013\n\003end\030\004 \001(\005B~"
  "\n\023com.google.protobufB\020DescriptorProtosH"
  "\001Z-google.golang.org/protobuf/types/desc"
  "riptorpb\370\001\001\242\002\003GPB\252\002\032Google.Protobuf.Refl"
  "ection"
  ;
static ::herogoogle::protobuf::internal::once_flag descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once;
const ::herogoogle::protobuf::internal::DescriptorTable descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto = {
  false, false, 6046, descriptor_table_protodef_herogoogle_2fprotobuf_2fdescriptor_2eproto, "google/protobuf/descriptor.proto", 
  &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once, nullptr, 0, 27,
  schemas, file_default_instances, TableStruct_herogoogle_2fprotobuf_2fdescriptor_2eproto::offsets,
  file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto, file_level_enum_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto, file_level_service_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::herogoogle::protobuf::internal::DescriptorTable* descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter() {
  return &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::herogoogle::protobuf::internal::AddDescriptorsRunner dynamic_init_dummy_herogoogle_2fprotobuf_2fdescriptor_2eproto(&descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto);
PROTOBUF_NAMESPACE_OPEN
const ::herogoogle::protobuf::EnumDescriptor* FieldDescriptorProto_Type_descriptor() {
  ::herogoogle::protobuf::internal::AssignDescriptors(&descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto);
  return file_level_enum_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto[0];
}
bool FieldDescriptorProto_Type_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_DOUBLE;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_FLOAT;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_INT64;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_UINT64;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_INT32;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_FIXED64;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_FIXED32;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_BOOL;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_STRING;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_GROUP;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_MESSAGE;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_BYTES;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_UINT32;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_ENUM;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_SFIXED32;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_SFIXED64;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_SINT32;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::TYPE_SINT64;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::Type_MIN;
constexpr FieldDescriptorProto_Type FieldDescriptorProto::Type_MAX;
constexpr int FieldDescriptorProto::Type_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
const ::herogoogle::protobuf::EnumDescriptor* FieldDescriptorProto_Label_descriptor() {
  ::herogoogle::protobuf::internal::AssignDescriptors(&descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto);
  return file_level_enum_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto[1];
}
bool FieldDescriptorProto_Label_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr FieldDescriptorProto_Label FieldDescriptorProto::LABEL_OPTIONAL;
constexpr FieldDescriptorProto_Label FieldDescriptorProto::LABEL_REQUIRED;
constexpr FieldDescriptorProto_Label FieldDescriptorProto::LABEL_REPEATED;
constexpr FieldDescriptorProto_Label FieldDescriptorProto::Label_MIN;
constexpr FieldDescriptorProto_Label FieldDescriptorProto::Label_MAX;
constexpr int FieldDescriptorProto::Label_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
const ::herogoogle::protobuf::EnumDescriptor* FileOptions_OptimizeMode_descriptor() {
  ::herogoogle::protobuf::internal::AssignDescriptors(&descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto);
  return file_level_enum_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto[2];
}
bool FileOptions_OptimizeMode_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr FileOptions_OptimizeMode FileOptions::SPEED;
constexpr FileOptions_OptimizeMode FileOptions::CODE_SIZE;
constexpr FileOptions_OptimizeMode FileOptions::LITE_RUNTIME;
constexpr FileOptions_OptimizeMode FileOptions::OptimizeMode_MIN;
constexpr FileOptions_OptimizeMode FileOptions::OptimizeMode_MAX;
constexpr int FileOptions::OptimizeMode_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
const ::herogoogle::protobuf::EnumDescriptor* FieldOptions_CType_descriptor() {
  ::herogoogle::protobuf::internal::AssignDescriptors(&descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto);
  return file_level_enum_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto[3];
}
bool FieldOptions_CType_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)
constexpr FieldOptions_CType FieldOptions::STRING;
constexpr FieldOptions_CType FieldOptions::CORD;
constexpr FieldOptions_CType FieldOptions::STRING_PIECE;
constexpr FieldOptions_CType FieldOptions::CType_MIN;
constexpr FieldOptions_CType FieldOptions::CType_MAX;
constexpr int FieldOptions::CType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
const ::herogoogle::protobuf::EnumDescriptor* FieldOptions_JSType_descriptor() {
  ::herogoogle::protobuf::internal::AssignDescriptors(&descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto);
  return file_level_enum_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto[4];
}
bool FieldOptions_JSType_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)
constexpr FieldOptions_JSType FieldOptions::JS_NORMAL;
constexpr FieldOptions_JSType FieldOptions::JS_STRING;
constexpr FieldOptions_JSType FieldOptions::JS_NUMBER;
constexpr FieldOptions_JSType FieldOptions::JSType_MIN;
constexpr FieldOptions_JSType FieldOptions::JSType_MAX;
constexpr int FieldOptions::JSType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
const ::herogoogle::protobuf::EnumDescriptor* MethodOptions_IdempotencyLevel_descriptor() {
  ::herogoogle::protobuf::internal::AssignDescriptors(&descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto);
  return file_level_enum_descriptors_herogoogle_2fprotobuf_2fdescriptor_2eproto[5];
}
bool MethodOptions_IdempotencyLevel_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)
constexpr MethodOptions_IdempotencyLevel MethodOptions::IDEMPOTENCY_UNKNOWN;
constexpr MethodOptions_IdempotencyLevel MethodOptions::NO_SIDE_EFFECTS;
constexpr MethodOptions_IdempotencyLevel MethodOptions::IDEMPOTENT;
constexpr MethodOptions_IdempotencyLevel MethodOptions::IdempotencyLevel_MIN;
constexpr MethodOptions_IdempotencyLevel MethodOptions::IdempotencyLevel_MAX;
constexpr int MethodOptions::IdempotencyLevel_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)

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

class FileDescriptorSet::_Internal {
 public:
};

FileDescriptorSet::FileDescriptorSet(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  file_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.FileDescriptorSet)
}
FileDescriptorSet::FileDescriptorSet(const FileDescriptorSet& from)
  : ::herogoogle::protobuf::Message(),
      file_(from.file_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.FileDescriptorSet)
}

void FileDescriptorSet::SharedCtor() {
}

FileDescriptorSet::~FileDescriptorSet() {
  // @@protoc_insertion_point(destructor:google.protobuf.FileDescriptorSet)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void FileDescriptorSet::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void FileDescriptorSet::ArenaDtor(void* object) {
  FileDescriptorSet* _this = reinterpret_cast< FileDescriptorSet* >(object);
  (void)_this;
}
void FileDescriptorSet::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void FileDescriptorSet::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void FileDescriptorSet::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.FileDescriptorSet)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  file_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* FileDescriptorSet::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .google.protobuf.FileDescriptorProto file = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_file(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* FileDescriptorSet::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FileDescriptorSet)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .google.protobuf.FileDescriptorProto file = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_file_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_file(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FileDescriptorSet)
  return target;
}

size_t FileDescriptorSet::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.FileDescriptorSet)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.FileDescriptorProto file = 1;
  total_size += 1UL * this->_internal_file_size();
  for (const auto& msg : this->file_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData FileDescriptorSet::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    FileDescriptorSet::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*FileDescriptorSet::GetClassData() const { return &_class_data_; }

void FileDescriptorSet::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<FileDescriptorSet *>(to)->MergeFrom(
      static_cast<const FileDescriptorSet &>(from));
}


void FileDescriptorSet::MergeFrom(const FileDescriptorSet& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FileDescriptorSet)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  file_.MergeFrom(from.file_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool FileDescriptorSet::IsInitialized() const {
  if (!::herogoogle::protobuf::internal::AllAreInitialized(file_)) return false;
  return true;
}

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

::herogoogle::protobuf::Metadata FileDescriptorSet::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[0]);
}

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

class FileDescriptorProto::_Internal {
 public:
  using HasBits = decltype(std::declval<FileDescriptorProto>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_package(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::herogoogle::protobuf::FileOptions& options(const FileDescriptorProto* msg);
  static void set_has_options(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::herogoogle::protobuf::SourceCodeInfo& source_code_info(const FileDescriptorProto* msg);
  static void set_has_source_code_info(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_syntax(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

const ::herogoogle::protobuf::FileOptions&
FileDescriptorProto::_Internal::options(const FileDescriptorProto* msg) {
  return *msg->options_;
}
const ::herogoogle::protobuf::SourceCodeInfo&
FileDescriptorProto::_Internal::source_code_info(const FileDescriptorProto* msg) {
  return *msg->source_code_info_;
}
FileDescriptorProto::FileDescriptorProto(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  dependency_(arena),
  message_type_(arena),
  enum_type_(arena),
  service_(arena),
  extension_(arena),
  public_dependency_(arena),
  weak_dependency_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.FileDescriptorProto)
}
FileDescriptorProto::FileDescriptorProto(const FileDescriptorProto& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      dependency_(from.dependency_),
      message_type_(from.message_type_),
      enum_type_(from.enum_type_),
      service_(from.service_),
      extension_(from.extension_),
      public_dependency_(from.public_dependency_),
      weak_dependency_(from.weak_dependency_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_name()) {
    name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  package_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_package()) {
    package_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_package(), 
      GetArenaForAllocation());
  }
  syntax_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_syntax()) {
    syntax_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_syntax(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_options()) {
    options_ = new ::herogoogle::protobuf::FileOptions(*from.options_);
  } else {
    options_ = nullptr;
  }
  if (from._internal_has_source_code_info()) {
    source_code_info_ = new ::herogoogle::protobuf::SourceCodeInfo(*from.source_code_info_);
  } else {
    source_code_info_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.FileDescriptorProto)
}

void FileDescriptorProto::SharedCtor() {
name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
package_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
syntax_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&options_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&source_code_info_) -
    reinterpret_cast<char*>(&options_)) + sizeof(source_code_info_));
}

FileDescriptorProto::~FileDescriptorProto() {
  // @@protoc_insertion_point(destructor:google.protobuf.FileDescriptorProto)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void FileDescriptorProto::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  package_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  syntax_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete options_;
  if (this != internal_default_instance()) delete source_code_info_;
}

void FileDescriptorProto::ArenaDtor(void* object) {
  FileDescriptorProto* _this = reinterpret_cast< FileDescriptorProto* >(object);
  (void)_this;
}
void FileDescriptorProto::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void FileDescriptorProto::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void FileDescriptorProto::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.FileDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  dependency_.Clear();
  message_type_.Clear();
  enum_type_.Clear();
  service_.Clear();
  extension_.Clear();
  public_dependency_.Clear();
  weak_dependency_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      package_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      syntax_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      GOOGLE_DCHECK(options_ != nullptr);
      options_->Clear();
    }
    if (cached_has_bits & 0x00000010u) {
      GOOGLE_DCHECK(source_code_info_ != nullptr);
      source_code_info_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* FileDescriptorProto::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileDescriptorProto.name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string package = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          auto str = _internal_mutable_package();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileDescriptorProto.package");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string dependency = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_dependency();
            ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
            #ifndef NDEBUG
            ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileDescriptorProto.dependency");
            #endif  // !NDEBUG
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.DescriptorProto message_type = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_message_type(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 42)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_enum_type(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<42>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.ServiceDescriptorProto service = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_service(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.FieldDescriptorProto extension = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_extension(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.FileOptions options = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_source_code_info(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 public_dependency = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 80)) {
          ptr -= 1;
          do {
            ptr += 1;
            _internal_add_public_dependency(::herogoogle::protobuf::internal::ReadVarint64(&ptr));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<80>(ptr));
        } else if (static_cast<::herogoogle::protobuf::uint8>(tag) == 82) {
          ptr = ::herogoogle::protobuf::internal::PackedInt32Parser(_internal_mutable_public_dependency(), ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 weak_dependency = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 88)) {
          ptr -= 1;
          do {
            ptr += 1;
            _internal_add_weak_dependency(::herogoogle::protobuf::internal::ReadVarint64(&ptr));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<88>(ptr));
        } else if (static_cast<::herogoogle::protobuf::uint8>(tag) == 90) {
          ptr = ::herogoogle::protobuf::internal::PackedInt32Parser(_internal_mutable_weak_dependency(), ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string syntax = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 98)) {
          auto str = _internal_mutable_syntax();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileDescriptorProto.syntax");
          #endif  // !NDEBUG
          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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* FileDescriptorProto::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FileDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileDescriptorProto.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // optional string package = 2;
  if (cached_has_bits & 0x00000002u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_package().data(), static_cast<int>(this->_internal_package().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileDescriptorProto.package");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_package(), target);
  }

  // repeated string dependency = 3;
  for (int i = 0, n = this->_internal_dependency_size(); i < n; i++) {
    const auto& s = this->_internal_dependency(i);
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileDescriptorProto.dependency");
    target = stream->WriteString(3, s, target);
  }

  // repeated .google.protobuf.DescriptorProto message_type = 4;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_message_type_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(4, this->_internal_message_type(i), target, stream);
  }

  // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_enum_type_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(5, this->_internal_enum_type(i), target, stream);
  }

  // repeated .google.protobuf.ServiceDescriptorProto service = 6;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_service_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(6, this->_internal_service(i), target, stream);
  }

  // repeated .google.protobuf.FieldDescriptorProto extension = 7;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_extension_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(7, this->_internal_extension(i), target, stream);
  }

  // optional .google.protobuf.FileOptions options = 8;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        8, _Internal::options(this), target, stream);
  }

  // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        9, _Internal::source_code_info(this), target, stream);
  }

  // repeated int32 public_dependency = 10;
  for (int i = 0, n = this->_internal_public_dependency_size(); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(10, this->_internal_public_dependency(i), target);
  }

  // repeated int32 weak_dependency = 11;
  for (int i = 0, n = this->_internal_weak_dependency_size(); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(11, this->_internal_weak_dependency(i), target);
  }

  // optional string syntax = 12;
  if (cached_has_bits & 0x00000004u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_syntax().data(), static_cast<int>(this->_internal_syntax().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileDescriptorProto.syntax");
    target = stream->WriteStringMaybeAliased(
        12, this->_internal_syntax(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FileDescriptorProto)
  return target;
}

size_t FileDescriptorProto::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.FileDescriptorProto)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string dependency = 3;
  total_size += 1 *
      ::herogoogle::protobuf::internal::FromIntSize(dependency_.size());
  for (int i = 0, n = dependency_.size(); i < n; i++) {
    total_size += ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
      dependency_.Get(i));
  }

  // repeated .google.protobuf.DescriptorProto message_type = 4;
  total_size += 1UL * this->_internal_message_type_size();
  for (const auto& msg : this->message_type_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
  total_size += 1UL * this->_internal_enum_type_size();
  for (const auto& msg : this->enum_type_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.ServiceDescriptorProto service = 6;
  total_size += 1UL * this->_internal_service_size();
  for (const auto& msg : this->service_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.FieldDescriptorProto extension = 7;
  total_size += 1UL * this->_internal_extension_size();
  for (const auto& msg : this->extension_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated int32 public_dependency = 10;
  {
    size_t data_size = ::herogoogle::protobuf::internal::WireFormatLite::
      Int32Size(this->public_dependency_);
    total_size += 1 *
                  ::herogoogle::protobuf::internal::FromIntSize(this->_internal_public_dependency_size());
    total_size += data_size;
  }

  // repeated int32 weak_dependency = 11;
  {
    size_t data_size = ::herogoogle::protobuf::internal::WireFormatLite::
      Int32Size(this->weak_dependency_);
    total_size += 1 *
                  ::herogoogle::protobuf::internal::FromIntSize(this->_internal_weak_dependency_size());
    total_size += data_size;
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_name());
    }

    // optional string package = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_package());
    }

    // optional string syntax = 12;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_syntax());
    }

    // optional .google.protobuf.FileOptions options = 8;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *options_);
    }

    // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *source_code_info_);
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData FileDescriptorProto::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    FileDescriptorProto::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*FileDescriptorProto::GetClassData() const { return &_class_data_; }

void FileDescriptorProto::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<FileDescriptorProto *>(to)->MergeFrom(
      static_cast<const FileDescriptorProto &>(from));
}


void FileDescriptorProto::MergeFrom(const FileDescriptorProto& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FileDescriptorProto)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  dependency_.MergeFrom(from.dependency_);
  message_type_.MergeFrom(from.message_type_);
  enum_type_.MergeFrom(from.enum_type_);
  service_.MergeFrom(from.service_);
  extension_.MergeFrom(from.extension_);
  public_dependency_.MergeFrom(from.public_dependency_);
  weak_dependency_.MergeFrom(from.weak_dependency_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_set_package(from._internal_package());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_set_syntax(from._internal_syntax());
    }
    if (cached_has_bits & 0x00000008u) {
      _internal_mutable_options()->::herogoogle::protobuf::FileOptions::MergeFrom(from._internal_options());
    }
    if (cached_has_bits & 0x00000010u) {
      _internal_mutable_source_code_info()->::herogoogle::protobuf::SourceCodeInfo::MergeFrom(from._internal_source_code_info());
    }
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool FileDescriptorProto::IsInitialized() const {
  if (!::herogoogle::protobuf::internal::AllAreInitialized(message_type_)) return false;
  if (!::herogoogle::protobuf::internal::AllAreInitialized(enum_type_)) return false;
  if (!::herogoogle::protobuf::internal::AllAreInitialized(service_)) return false;
  if (!::herogoogle::protobuf::internal::AllAreInitialized(extension_)) return false;
  if (_internal_has_options()) {
    if (!options_->IsInitialized()) return false;
  }
  return true;
}

void FileDescriptorProto::InternalSwap(FileDescriptorProto* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  dependency_.InternalSwap(&other->dependency_);
  message_type_.InternalSwap(&other->message_type_);
  enum_type_.InternalSwap(&other->enum_type_);
  service_.InternalSwap(&other->service_);
  extension_.InternalSwap(&other->extension_);
  public_dependency_.InternalSwap(&other->public_dependency_);
  weak_dependency_.InternalSwap(&other->weak_dependency_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &package_, lhs_arena,
      &other->package_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &syntax_, lhs_arena,
      &other->syntax_, rhs_arena
  );
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(FileDescriptorProto, source_code_info_)
      + sizeof(FileDescriptorProto::source_code_info_)
      - PROTOBUF_FIELD_OFFSET(FileDescriptorProto, options_)>(
          reinterpret_cast<char*>(&options_),
          reinterpret_cast<char*>(&other->options_));
}

::herogoogle::protobuf::Metadata FileDescriptorProto::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[1]);
}

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

class DescriptorProto_ExtensionRange::_Internal {
 public:
  using HasBits = decltype(std::declval<DescriptorProto_ExtensionRange>()._has_bits_);
  static void set_has_start(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_end(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static const ::herogoogle::protobuf::ExtensionRangeOptions& options(const DescriptorProto_ExtensionRange* msg);
  static void set_has_options(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::herogoogle::protobuf::ExtensionRangeOptions&
DescriptorProto_ExtensionRange::_Internal::options(const DescriptorProto_ExtensionRange* msg) {
  return *msg->options_;
}
DescriptorProto_ExtensionRange::DescriptorProto_ExtensionRange(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.DescriptorProto.ExtensionRange)
}
DescriptorProto_ExtensionRange::DescriptorProto_ExtensionRange(const DescriptorProto_ExtensionRange& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_options()) {
    options_ = new ::herogoogle::protobuf::ExtensionRangeOptions(*from.options_);
  } else {
    options_ = nullptr;
  }
  ::memcpy(&start_, &from.start_,
    static_cast<size_t>(reinterpret_cast<char*>(&end_) -
    reinterpret_cast<char*>(&start_)) + sizeof(end_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.DescriptorProto.ExtensionRange)
}

void DescriptorProto_ExtensionRange::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&options_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&end_) -
    reinterpret_cast<char*>(&options_)) + sizeof(end_));
}

DescriptorProto_ExtensionRange::~DescriptorProto_ExtensionRange() {
  // @@protoc_insertion_point(destructor:google.protobuf.DescriptorProto.ExtensionRange)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void DescriptorProto_ExtensionRange::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete options_;
}

void DescriptorProto_ExtensionRange::ArenaDtor(void* object) {
  DescriptorProto_ExtensionRange* _this = reinterpret_cast< DescriptorProto_ExtensionRange* >(object);
  (void)_this;
}
void DescriptorProto_ExtensionRange::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void DescriptorProto_ExtensionRange::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void DescriptorProto_ExtensionRange::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.DescriptorProto.ExtensionRange)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(options_ != nullptr);
    options_->Clear();
  }
  if (cached_has_bits & 0x00000006u) {
    ::memset(&start_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&end_) -
        reinterpret_cast<char*>(&start_)) + sizeof(end_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* DescriptorProto_ExtensionRange::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional int32 start = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 8)) {
          _Internal::set_has_start(&has_bits);
          start_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 end = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          _Internal::set_has_end(&has_bits);
          end_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.ExtensionRangeOptions options = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_options(), 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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* DescriptorProto_ExtensionRange::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.DescriptorProto.ExtensionRange)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional int32 start = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_start(), target);
  }

  // optional int32 end = 2;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_end(), target);
  }

  // optional .google.protobuf.ExtensionRangeOptions options = 3;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::options(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.DescriptorProto.ExtensionRange)
  return target;
}

size_t DescriptorProto_ExtensionRange::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.DescriptorProto.ExtensionRange)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional .google.protobuf.ExtensionRangeOptions options = 3;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *options_);
    }

    // optional int32 start = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_start());
    }

    // optional int32 end = 2;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_end());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData DescriptorProto_ExtensionRange::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    DescriptorProto_ExtensionRange::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*DescriptorProto_ExtensionRange::GetClassData() const { return &_class_data_; }

void DescriptorProto_ExtensionRange::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<DescriptorProto_ExtensionRange *>(to)->MergeFrom(
      static_cast<const DescriptorProto_ExtensionRange &>(from));
}


void DescriptorProto_ExtensionRange::MergeFrom(const DescriptorProto_ExtensionRange& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.DescriptorProto.ExtensionRange)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_mutable_options()->::herogoogle::protobuf::ExtensionRangeOptions::MergeFrom(from._internal_options());
    }
    if (cached_has_bits & 0x00000002u) {
      start_ = from.start_;
    }
    if (cached_has_bits & 0x00000004u) {
      end_ = from.end_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void DescriptorProto_ExtensionRange::CopyFrom(const DescriptorProto_ExtensionRange& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.DescriptorProto.ExtensionRange)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DescriptorProto_ExtensionRange::IsInitialized() const {
  if (_internal_has_options()) {
    if (!options_->IsInitialized()) return false;
  }
  return true;
}

void DescriptorProto_ExtensionRange::InternalSwap(DescriptorProto_ExtensionRange* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DescriptorProto_ExtensionRange, end_)
      + sizeof(DescriptorProto_ExtensionRange::end_)
      - PROTOBUF_FIELD_OFFSET(DescriptorProto_ExtensionRange, options_)>(
          reinterpret_cast<char*>(&options_),
          reinterpret_cast<char*>(&other->options_));
}

::herogoogle::protobuf::Metadata DescriptorProto_ExtensionRange::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[2]);
}

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

class DescriptorProto_ReservedRange::_Internal {
 public:
  using HasBits = decltype(std::declval<DescriptorProto_ReservedRange>()._has_bits_);
  static void set_has_start(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_end(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

DescriptorProto_ReservedRange::DescriptorProto_ReservedRange(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.DescriptorProto.ReservedRange)
}
DescriptorProto_ReservedRange::DescriptorProto_ReservedRange(const DescriptorProto_ReservedRange& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&start_, &from.start_,
    static_cast<size_t>(reinterpret_cast<char*>(&end_) -
    reinterpret_cast<char*>(&start_)) + sizeof(end_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.DescriptorProto.ReservedRange)
}

void DescriptorProto_ReservedRange::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&start_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&end_) -
    reinterpret_cast<char*>(&start_)) + sizeof(end_));
}

DescriptorProto_ReservedRange::~DescriptorProto_ReservedRange() {
  // @@protoc_insertion_point(destructor:google.protobuf.DescriptorProto.ReservedRange)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void DescriptorProto_ReservedRange::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void DescriptorProto_ReservedRange::ArenaDtor(void* object) {
  DescriptorProto_ReservedRange* _this = reinterpret_cast< DescriptorProto_ReservedRange* >(object);
  (void)_this;
}
void DescriptorProto_ReservedRange::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void DescriptorProto_ReservedRange::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void DescriptorProto_ReservedRange::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.DescriptorProto.ReservedRange)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    ::memset(&start_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&end_) -
        reinterpret_cast<char*>(&start_)) + sizeof(end_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* DescriptorProto_ReservedRange::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional int32 start = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 8)) {
          _Internal::set_has_start(&has_bits);
          start_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 end = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          _Internal::set_has_end(&has_bits);
          end_ = ::herogoogle::protobuf::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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* DescriptorProto_ReservedRange::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.DescriptorProto.ReservedRange)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional int32 start = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_start(), target);
  }

  // optional int32 end = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_end(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.DescriptorProto.ReservedRange)
  return target;
}

size_t DescriptorProto_ReservedRange::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.DescriptorProto.ReservedRange)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional int32 start = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_start());
    }

    // optional int32 end = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_end());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData DescriptorProto_ReservedRange::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    DescriptorProto_ReservedRange::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*DescriptorProto_ReservedRange::GetClassData() const { return &_class_data_; }

void DescriptorProto_ReservedRange::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<DescriptorProto_ReservedRange *>(to)->MergeFrom(
      static_cast<const DescriptorProto_ReservedRange &>(from));
}


void DescriptorProto_ReservedRange::MergeFrom(const DescriptorProto_ReservedRange& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.DescriptorProto.ReservedRange)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      start_ = from.start_;
    }
    if (cached_has_bits & 0x00000002u) {
      end_ = from.end_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void DescriptorProto_ReservedRange::CopyFrom(const DescriptorProto_ReservedRange& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.DescriptorProto.ReservedRange)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void DescriptorProto_ReservedRange::InternalSwap(DescriptorProto_ReservedRange* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DescriptorProto_ReservedRange, end_)
      + sizeof(DescriptorProto_ReservedRange::end_)
      - PROTOBUF_FIELD_OFFSET(DescriptorProto_ReservedRange, start_)>(
          reinterpret_cast<char*>(&start_),
          reinterpret_cast<char*>(&other->start_));
}

::herogoogle::protobuf::Metadata DescriptorProto_ReservedRange::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[3]);
}

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

class DescriptorProto::_Internal {
 public:
  using HasBits = decltype(std::declval<DescriptorProto>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::herogoogle::protobuf::MessageOptions& options(const DescriptorProto* msg);
  static void set_has_options(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::herogoogle::protobuf::MessageOptions&
DescriptorProto::_Internal::options(const DescriptorProto* msg) {
  return *msg->options_;
}
DescriptorProto::DescriptorProto(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  field_(arena),
  nested_type_(arena),
  enum_type_(arena),
  extension_range_(arena),
  extension_(arena),
  oneof_decl_(arena),
  reserved_range_(arena),
  reserved_name_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.DescriptorProto)
}
DescriptorProto::DescriptorProto(const DescriptorProto& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      field_(from.field_),
      nested_type_(from.nested_type_),
      enum_type_(from.enum_type_),
      extension_range_(from.extension_range_),
      extension_(from.extension_),
      oneof_decl_(from.oneof_decl_),
      reserved_range_(from.reserved_range_),
      reserved_name_(from.reserved_name_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_name()) {
    name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_options()) {
    options_ = new ::herogoogle::protobuf::MessageOptions(*from.options_);
  } else {
    options_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.DescriptorProto)
}

void DescriptorProto::SharedCtor() {
name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
options_ = nullptr;
}

DescriptorProto::~DescriptorProto() {
  // @@protoc_insertion_point(destructor:google.protobuf.DescriptorProto)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void DescriptorProto::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete options_;
}

void DescriptorProto::ArenaDtor(void* object) {
  DescriptorProto* _this = reinterpret_cast< DescriptorProto* >(object);
  (void)_this;
}
void DescriptorProto::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void DescriptorProto::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void DescriptorProto::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.DescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  field_.Clear();
  nested_type_.Clear();
  enum_type_.Clear();
  extension_range_.Clear();
  extension_.Clear();
  oneof_decl_.Clear();
  reserved_range_.Clear();
  reserved_name_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(options_ != nullptr);
      options_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* DescriptorProto::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.DescriptorProto.name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.FieldDescriptorProto field = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_field(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.DescriptorProto nested_type = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_nested_type(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_enum_type(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 42)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_extension_range(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<42>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.FieldDescriptorProto extension = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_extension(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.MessageOptions options = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 66)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_oneof_decl(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<66>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 74)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_reserved_range(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<74>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string reserved_name = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 82)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_reserved_name();
            ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
            #ifndef NDEBUG
            ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.DescriptorProto.reserved_name");
            #endif  // !NDEBUG
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<82>(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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* DescriptorProto::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.DescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.DescriptorProto.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // repeated .google.protobuf.FieldDescriptorProto field = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_field_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_field(i), target, stream);
  }

  // repeated .google.protobuf.DescriptorProto nested_type = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_nested_type_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(3, this->_internal_nested_type(i), target, stream);
  }

  // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_enum_type_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(4, this->_internal_enum_type(i), target, stream);
  }

  // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_extension_range_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(5, this->_internal_extension_range(i), target, stream);
  }

  // repeated .google.protobuf.FieldDescriptorProto extension = 6;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_extension_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(6, this->_internal_extension(i), target, stream);
  }

  // optional .google.protobuf.MessageOptions options = 7;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        7, _Internal::options(this), target, stream);
  }

  // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_oneof_decl_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(8, this->_internal_oneof_decl(i), target, stream);
  }

  // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_reserved_range_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(9, this->_internal_reserved_range(i), target, stream);
  }

  // repeated string reserved_name = 10;
  for (int i = 0, n = this->_internal_reserved_name_size(); i < n; i++) {
    const auto& s = this->_internal_reserved_name(i);
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.DescriptorProto.reserved_name");
    target = stream->WriteString(10, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.DescriptorProto)
  return target;
}

size_t DescriptorProto::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.DescriptorProto)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.FieldDescriptorProto field = 2;
  total_size += 1UL * this->_internal_field_size();
  for (const auto& msg : this->field_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.DescriptorProto nested_type = 3;
  total_size += 1UL * this->_internal_nested_type_size();
  for (const auto& msg : this->nested_type_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
  total_size += 1UL * this->_internal_enum_type_size();
  for (const auto& msg : this->enum_type_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
  total_size += 1UL * this->_internal_extension_range_size();
  for (const auto& msg : this->extension_range_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.FieldDescriptorProto extension = 6;
  total_size += 1UL * this->_internal_extension_size();
  for (const auto& msg : this->extension_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
  total_size += 1UL * this->_internal_oneof_decl_size();
  for (const auto& msg : this->oneof_decl_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
  total_size += 1UL * this->_internal_reserved_range_size();
  for (const auto& msg : this->reserved_range_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated string reserved_name = 10;
  total_size += 1 *
      ::herogoogle::protobuf::internal::FromIntSize(reserved_name_.size());
  for (int i = 0, n = reserved_name_.size(); i < n; i++) {
    total_size += ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
      reserved_name_.Get(i));
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_name());
    }

    // optional .google.protobuf.MessageOptions options = 7;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *options_);
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData DescriptorProto::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    DescriptorProto::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*DescriptorProto::GetClassData() const { return &_class_data_; }

void DescriptorProto::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<DescriptorProto *>(to)->MergeFrom(
      static_cast<const DescriptorProto &>(from));
}


void DescriptorProto::MergeFrom(const DescriptorProto& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.DescriptorProto)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  field_.MergeFrom(from.field_);
  nested_type_.MergeFrom(from.nested_type_);
  enum_type_.MergeFrom(from.enum_type_);
  extension_range_.MergeFrom(from.extension_range_);
  extension_.MergeFrom(from.extension_);
  oneof_decl_.MergeFrom(from.oneof_decl_);
  reserved_range_.MergeFrom(from.reserved_range_);
  reserved_name_.MergeFrom(from.reserved_name_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_options()->::herogoogle::protobuf::MessageOptions::MergeFrom(from._internal_options());
    }
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool DescriptorProto::IsInitialized() const {
  if (!::herogoogle::protobuf::internal::AllAreInitialized(field_)) return false;
  if (!::herogoogle::protobuf::internal::AllAreInitialized(nested_type_)) return false;
  if (!::herogoogle::protobuf::internal::AllAreInitialized(enum_type_)) return false;
  if (!::herogoogle::protobuf::internal::AllAreInitialized(extension_range_)) return false;
  if (!::herogoogle::protobuf::internal::AllAreInitialized(extension_)) return false;
  if (!::herogoogle::protobuf::internal::AllAreInitialized(oneof_decl_)) return false;
  if (_internal_has_options()) {
    if (!options_->IsInitialized()) return false;
  }
  return true;
}

void DescriptorProto::InternalSwap(DescriptorProto* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  field_.InternalSwap(&other->field_);
  nested_type_.InternalSwap(&other->nested_type_);
  enum_type_.InternalSwap(&other->enum_type_);
  extension_range_.InternalSwap(&other->extension_range_);
  extension_.InternalSwap(&other->extension_);
  oneof_decl_.InternalSwap(&other->oneof_decl_);
  reserved_range_.InternalSwap(&other->reserved_range_);
  reserved_name_.InternalSwap(&other->reserved_name_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  swap(options_, other->options_);
}

::herogoogle::protobuf::Metadata DescriptorProto::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[4]);
}

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

class ExtensionRangeOptions::_Internal {
 public:
};

ExtensionRangeOptions::ExtensionRangeOptions(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  _extensions_(arena),
  uninterpreted_option_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.ExtensionRangeOptions)
}
ExtensionRangeOptions::ExtensionRangeOptions(const ExtensionRangeOptions& from)
  : ::herogoogle::protobuf::Message(),
      uninterpreted_option_(from.uninterpreted_option_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.ExtensionRangeOptions)
}

void ExtensionRangeOptions::SharedCtor() {
}

ExtensionRangeOptions::~ExtensionRangeOptions() {
  // @@protoc_insertion_point(destructor:google.protobuf.ExtensionRangeOptions)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void ExtensionRangeOptions::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void ExtensionRangeOptions::ArenaDtor(void* object) {
  ExtensionRangeOptions* _this = reinterpret_cast< ExtensionRangeOptions* >(object);
  (void)_this;
}
void ExtensionRangeOptions::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void ExtensionRangeOptions::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ExtensionRangeOptions::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.ExtensionRangeOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _extensions_.Clear();
  uninterpreted_option_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* ExtensionRangeOptions::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      case 999:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<7994>(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;
    }
    if ((8000u <= tag)) {
      ptr = _extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
      CHK_(ptr != nullptr);
      continue;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* ExtensionRangeOptions::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.ExtensionRangeOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_uninterpreted_option_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(999, this->_internal_uninterpreted_option(i), target, stream);
  }

  // Extension range [1000, 536870912)
  target = _extensions_._InternalSerialize(
  internal_default_instance(), 1000, 536870912, target, stream);

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.ExtensionRangeOptions)
  return target;
}

size_t ExtensionRangeOptions::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.ExtensionRangeOptions)
  size_t total_size = 0;

  total_size += _extensions_.ByteSize();

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  total_size += 2UL * this->_internal_uninterpreted_option_size();
  for (const auto& msg : this->uninterpreted_option_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData ExtensionRangeOptions::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    ExtensionRangeOptions::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*ExtensionRangeOptions::GetClassData() const { return &_class_data_; }

void ExtensionRangeOptions::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<ExtensionRangeOptions *>(to)->MergeFrom(
      static_cast<const ExtensionRangeOptions &>(from));
}


void ExtensionRangeOptions::MergeFrom(const ExtensionRangeOptions& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.ExtensionRangeOptions)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  _extensions_.MergeFrom(from._extensions_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ExtensionRangeOptions::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if (!::herogoogle::protobuf::internal::AllAreInitialized(uninterpreted_option_)) return false;
  return true;
}

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

::herogoogle::protobuf::Metadata ExtensionRangeOptions::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[5]);
}

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

class FieldDescriptorProto::_Internal {
 public:
  using HasBits = decltype(std::declval<FieldDescriptorProto>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_number(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_label(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_type(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_type_name(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_extendee(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_default_value(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_oneof_index(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_json_name(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::herogoogle::protobuf::FieldOptions& options(const FieldDescriptorProto* msg);
  static void set_has_options(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_proto3_optional(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
};

const ::herogoogle::protobuf::FieldOptions&
FieldDescriptorProto::_Internal::options(const FieldDescriptorProto* msg) {
  return *msg->options_;
}
FieldDescriptorProto::FieldDescriptorProto(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.FieldDescriptorProto)
}
FieldDescriptorProto::FieldDescriptorProto(const FieldDescriptorProto& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_name()) {
    name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  extendee_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_extendee()) {
    extendee_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_extendee(), 
      GetArenaForAllocation());
  }
  type_name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_type_name()) {
    type_name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_type_name(), 
      GetArenaForAllocation());
  }
  default_value_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_default_value()) {
    default_value_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_default_value(), 
      GetArenaForAllocation());
  }
  json_name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_json_name()) {
    json_name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_json_name(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_options()) {
    options_ = new ::herogoogle::protobuf::FieldOptions(*from.options_);
  } else {
    options_ = nullptr;
  }
  ::memcpy(&number_, &from.number_,
    static_cast<size_t>(reinterpret_cast<char*>(&type_) -
    reinterpret_cast<char*>(&number_)) + sizeof(type_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.FieldDescriptorProto)
}

void FieldDescriptorProto::SharedCtor() {
name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
extendee_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
type_name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
default_value_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
json_name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&options_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&proto3_optional_) -
    reinterpret_cast<char*>(&options_)) + sizeof(proto3_optional_));
label_ = 1;
type_ = 1;
}

FieldDescriptorProto::~FieldDescriptorProto() {
  // @@protoc_insertion_point(destructor:google.protobuf.FieldDescriptorProto)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void FieldDescriptorProto::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  extendee_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  type_name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  default_value_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  json_name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete options_;
}

void FieldDescriptorProto::ArenaDtor(void* object) {
  FieldDescriptorProto* _this = reinterpret_cast< FieldDescriptorProto* >(object);
  (void)_this;
}
void FieldDescriptorProto::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void FieldDescriptorProto::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void FieldDescriptorProto::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.FieldDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      extendee_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      type_name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      default_value_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000010u) {
      json_name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000020u) {
      GOOGLE_DCHECK(options_ != nullptr);
      options_->Clear();
    }
  }
  if (cached_has_bits & 0x000000c0u) {
    ::memset(&number_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&oneof_index_) -
        reinterpret_cast<char*>(&number_)) + sizeof(oneof_index_));
  }
  if (cached_has_bits & 0x00000700u) {
    proto3_optional_ = false;
    label_ = 1;
    type_ = 1;
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* FieldDescriptorProto::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string extendee = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          auto str = _internal_mutable_extendee();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.extendee");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 number = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 24)) {
          _Internal::set_has_number(&has_bits);
          number_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 32)) {
          ::herogoogle::protobuf::uint64 val = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::herogoogle::protobuf::FieldDescriptorProto_Label_IsValid(val))) {
            _internal_set_label(static_cast<::herogoogle::protobuf::FieldDescriptorProto_Label>(val));
          } else {
            ::herogoogle::protobuf::internal::WriteVarint(4, val, mutable_unknown_fields());
          }
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 40)) {
          ::herogoogle::protobuf::uint64 val = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::herogoogle::protobuf::FieldDescriptorProto_Type_IsValid(val))) {
            _internal_set_type(static_cast<::herogoogle::protobuf::FieldDescriptorProto_Type>(val));
          } else {
            ::herogoogle::protobuf::internal::WriteVarint(5, val, mutable_unknown_fields());
          }
        } else
          goto handle_unusual;
        continue;
      // optional string type_name = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 50)) {
          auto str = _internal_mutable_type_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.type_name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string default_value = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          auto str = _internal_mutable_default_value();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.default_value");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.FieldOptions options = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 oneof_index = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 72)) {
          _Internal::set_has_oneof_index(&has_bits);
          oneof_index_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string json_name = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 82)) {
          auto str = _internal_mutable_json_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.json_name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool proto3_optional = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 136)) {
          _Internal::set_has_proto3_optional(&has_bits);
          proto3_optional_ = ::herogoogle::protobuf::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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* FieldDescriptorProto::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FieldDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FieldDescriptorProto.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // optional string extendee = 2;
  if (cached_has_bits & 0x00000002u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_extendee().data(), static_cast<int>(this->_internal_extendee().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FieldDescriptorProto.extendee");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_extendee(), target);
  }

  // optional int32 number = 3;
  if (cached_has_bits & 0x00000040u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_number(), target);
  }

  // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteEnumToArray(
      4, this->_internal_label(), target);
  }

  // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteEnumToArray(
      5, this->_internal_type(), target);
  }

  // optional string type_name = 6;
  if (cached_has_bits & 0x00000004u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_type_name().data(), static_cast<int>(this->_internal_type_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FieldDescriptorProto.type_name");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_type_name(), target);
  }

  // optional string default_value = 7;
  if (cached_has_bits & 0x00000008u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_default_value().data(), static_cast<int>(this->_internal_default_value().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FieldDescriptorProto.default_value");
    target = stream->WriteStringMaybeAliased(
        7, this->_internal_default_value(), target);
  }

  // optional .google.protobuf.FieldOptions options = 8;
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        8, _Internal::options(this), target, stream);
  }

  // optional int32 oneof_index = 9;
  if (cached_has_bits & 0x00000080u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(9, this->_internal_oneof_index(), target);
  }

  // optional string json_name = 10;
  if (cached_has_bits & 0x00000010u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_json_name().data(), static_cast<int>(this->_internal_json_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FieldDescriptorProto.json_name");
    target = stream->WriteStringMaybeAliased(
        10, this->_internal_json_name(), target);
  }

  // optional bool proto3_optional = 17;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(17, this->_internal_proto3_optional(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FieldDescriptorProto)
  return target;
}

size_t FieldDescriptorProto::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.FieldDescriptorProto)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_name());
    }

    // optional string extendee = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_extendee());
    }

    // optional string type_name = 6;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_type_name());
    }

    // optional string default_value = 7;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_default_value());
    }

    // optional string json_name = 10;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_json_name());
    }

    // optional .google.protobuf.FieldOptions options = 8;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *options_);
    }

    // optional int32 number = 3;
    if (cached_has_bits & 0x00000040u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_number());
    }

    // optional int32 oneof_index = 9;
    if (cached_has_bits & 0x00000080u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_oneof_index());
    }

  }
  if (cached_has_bits & 0x00000700u) {
    // optional bool proto3_optional = 17;
    if (cached_has_bits & 0x00000100u) {
      total_size += 2 + 1;
    }

    // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
    if (cached_has_bits & 0x00000200u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::EnumSize(this->_internal_label());
    }

    // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
    if (cached_has_bits & 0x00000400u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::EnumSize(this->_internal_type());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData FieldDescriptorProto::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    FieldDescriptorProto::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*FieldDescriptorProto::GetClassData() const { return &_class_data_; }

void FieldDescriptorProto::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<FieldDescriptorProto *>(to)->MergeFrom(
      static_cast<const FieldDescriptorProto &>(from));
}


void FieldDescriptorProto::MergeFrom(const FieldDescriptorProto& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FieldDescriptorProto)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_set_extendee(from._internal_extendee());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_set_type_name(from._internal_type_name());
    }
    if (cached_has_bits & 0x00000008u) {
      _internal_set_default_value(from._internal_default_value());
    }
    if (cached_has_bits & 0x00000010u) {
      _internal_set_json_name(from._internal_json_name());
    }
    if (cached_has_bits & 0x00000020u) {
      _internal_mutable_options()->::herogoogle::protobuf::FieldOptions::MergeFrom(from._internal_options());
    }
    if (cached_has_bits & 0x00000040u) {
      number_ = from.number_;
    }
    if (cached_has_bits & 0x00000080u) {
      oneof_index_ = from.oneof_index_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00000700u) {
    if (cached_has_bits & 0x00000100u) {
      proto3_optional_ = from.proto3_optional_;
    }
    if (cached_has_bits & 0x00000200u) {
      label_ = from.label_;
    }
    if (cached_has_bits & 0x00000400u) {
      type_ = from.type_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool FieldDescriptorProto::IsInitialized() const {
  if (_internal_has_options()) {
    if (!options_->IsInitialized()) return false;
  }
  return true;
}

void FieldDescriptorProto::InternalSwap(FieldDescriptorProto* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &extendee_, lhs_arena,
      &other->extendee_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &type_name_, lhs_arena,
      &other->type_name_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &default_value_, lhs_arena,
      &other->default_value_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &json_name_, lhs_arena,
      &other->json_name_, rhs_arena
  );
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(FieldDescriptorProto, proto3_optional_)
      + sizeof(FieldDescriptorProto::proto3_optional_)
      - PROTOBUF_FIELD_OFFSET(FieldDescriptorProto, options_)>(
          reinterpret_cast<char*>(&options_),
          reinterpret_cast<char*>(&other->options_));
  swap(label_, other->label_);
  swap(type_, other->type_);
}

::herogoogle::protobuf::Metadata FieldDescriptorProto::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[6]);
}

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

class OneofDescriptorProto::_Internal {
 public:
  using HasBits = decltype(std::declval<OneofDescriptorProto>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::herogoogle::protobuf::OneofOptions& options(const OneofDescriptorProto* msg);
  static void set_has_options(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::herogoogle::protobuf::OneofOptions&
OneofDescriptorProto::_Internal::options(const OneofDescriptorProto* msg) {
  return *msg->options_;
}
OneofDescriptorProto::OneofDescriptorProto(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.OneofDescriptorProto)
}
OneofDescriptorProto::OneofDescriptorProto(const OneofDescriptorProto& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_name()) {
    name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_options()) {
    options_ = new ::herogoogle::protobuf::OneofOptions(*from.options_);
  } else {
    options_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.OneofDescriptorProto)
}

void OneofDescriptorProto::SharedCtor() {
name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
options_ = nullptr;
}

OneofDescriptorProto::~OneofDescriptorProto() {
  // @@protoc_insertion_point(destructor:google.protobuf.OneofDescriptorProto)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void OneofDescriptorProto::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete options_;
}

void OneofDescriptorProto::ArenaDtor(void* object) {
  OneofDescriptorProto* _this = reinterpret_cast< OneofDescriptorProto* >(object);
  (void)_this;
}
void OneofDescriptorProto::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void OneofDescriptorProto::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void OneofDescriptorProto::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.OneofDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(options_ != nullptr);
      options_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* OneofDescriptorProto::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.OneofDescriptorProto.name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.OneofOptions options = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_options(), 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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* OneofDescriptorProto::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.OneofDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.OneofDescriptorProto.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // optional .google.protobuf.OneofOptions options = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::options(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.OneofDescriptorProto)
  return target;
}

size_t OneofDescriptorProto::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.OneofDescriptorProto)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_name());
    }

    // optional .google.protobuf.OneofOptions options = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *options_);
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData OneofDescriptorProto::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    OneofDescriptorProto::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*OneofDescriptorProto::GetClassData() const { return &_class_data_; }

void OneofDescriptorProto::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<OneofDescriptorProto *>(to)->MergeFrom(
      static_cast<const OneofDescriptorProto &>(from));
}


void OneofDescriptorProto::MergeFrom(const OneofDescriptorProto& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.OneofDescriptorProto)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_options()->::herogoogle::protobuf::OneofOptions::MergeFrom(from._internal_options());
    }
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool OneofDescriptorProto::IsInitialized() const {
  if (_internal_has_options()) {
    if (!options_->IsInitialized()) return false;
  }
  return true;
}

void OneofDescriptorProto::InternalSwap(OneofDescriptorProto* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  swap(options_, other->options_);
}

::herogoogle::protobuf::Metadata OneofDescriptorProto::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[7]);
}

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

class EnumDescriptorProto_EnumReservedRange::_Internal {
 public:
  using HasBits = decltype(std::declval<EnumDescriptorProto_EnumReservedRange>()._has_bits_);
  static void set_has_start(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_end(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

EnumDescriptorProto_EnumReservedRange::EnumDescriptorProto_EnumReservedRange(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumDescriptorProto.EnumReservedRange)
}
EnumDescriptorProto_EnumReservedRange::EnumDescriptorProto_EnumReservedRange(const EnumDescriptorProto_EnumReservedRange& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&start_, &from.start_,
    static_cast<size_t>(reinterpret_cast<char*>(&end_) -
    reinterpret_cast<char*>(&start_)) + sizeof(end_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumDescriptorProto.EnumReservedRange)
}

void EnumDescriptorProto_EnumReservedRange::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&start_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&end_) -
    reinterpret_cast<char*>(&start_)) + sizeof(end_));
}

EnumDescriptorProto_EnumReservedRange::~EnumDescriptorProto_EnumReservedRange() {
  // @@protoc_insertion_point(destructor:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void EnumDescriptorProto_EnumReservedRange::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void EnumDescriptorProto_EnumReservedRange::ArenaDtor(void* object) {
  EnumDescriptorProto_EnumReservedRange* _this = reinterpret_cast< EnumDescriptorProto_EnumReservedRange* >(object);
  (void)_this;
}
void EnumDescriptorProto_EnumReservedRange::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void EnumDescriptorProto_EnumReservedRange::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void EnumDescriptorProto_EnumReservedRange::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    ::memset(&start_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&end_) -
        reinterpret_cast<char*>(&start_)) + sizeof(end_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* EnumDescriptorProto_EnumReservedRange::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional int32 start = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 8)) {
          _Internal::set_has_start(&has_bits);
          start_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 end = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          _Internal::set_has_end(&has_bits);
          end_ = ::herogoogle::protobuf::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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* EnumDescriptorProto_EnumReservedRange::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional int32 start = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_start(), target);
  }

  // optional int32 end = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_end(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  return target;
}

size_t EnumDescriptorProto_EnumReservedRange::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional int32 start = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_start());
    }

    // optional int32 end = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_end());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData EnumDescriptorProto_EnumReservedRange::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    EnumDescriptorProto_EnumReservedRange::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*EnumDescriptorProto_EnumReservedRange::GetClassData() const { return &_class_data_; }

void EnumDescriptorProto_EnumReservedRange::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<EnumDescriptorProto_EnumReservedRange *>(to)->MergeFrom(
      static_cast<const EnumDescriptorProto_EnumReservedRange &>(from));
}


void EnumDescriptorProto_EnumReservedRange::MergeFrom(const EnumDescriptorProto_EnumReservedRange& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      start_ = from.start_;
    }
    if (cached_has_bits & 0x00000002u) {
      end_ = from.end_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void EnumDescriptorProto_EnumReservedRange::CopyFrom(const EnumDescriptorProto_EnumReservedRange& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.EnumDescriptorProto.EnumReservedRange)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void EnumDescriptorProto_EnumReservedRange::InternalSwap(EnumDescriptorProto_EnumReservedRange* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(EnumDescriptorProto_EnumReservedRange, end_)
      + sizeof(EnumDescriptorProto_EnumReservedRange::end_)
      - PROTOBUF_FIELD_OFFSET(EnumDescriptorProto_EnumReservedRange, start_)>(
          reinterpret_cast<char*>(&start_),
          reinterpret_cast<char*>(&other->start_));
}

::herogoogle::protobuf::Metadata EnumDescriptorProto_EnumReservedRange::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[8]);
}

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

class EnumDescriptorProto::_Internal {
 public:
  using HasBits = decltype(std::declval<EnumDescriptorProto>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::herogoogle::protobuf::EnumOptions& options(const EnumDescriptorProto* msg);
  static void set_has_options(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::herogoogle::protobuf::EnumOptions&
EnumDescriptorProto::_Internal::options(const EnumDescriptorProto* msg) {
  return *msg->options_;
}
EnumDescriptorProto::EnumDescriptorProto(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  value_(arena),
  reserved_range_(arena),
  reserved_name_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumDescriptorProto)
}
EnumDescriptorProto::EnumDescriptorProto(const EnumDescriptorProto& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      value_(from.value_),
      reserved_range_(from.reserved_range_),
      reserved_name_(from.reserved_name_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_name()) {
    name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_options()) {
    options_ = new ::herogoogle::protobuf::EnumOptions(*from.options_);
  } else {
    options_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumDescriptorProto)
}

void EnumDescriptorProto::SharedCtor() {
name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
options_ = nullptr;
}

EnumDescriptorProto::~EnumDescriptorProto() {
  // @@protoc_insertion_point(destructor:google.protobuf.EnumDescriptorProto)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void EnumDescriptorProto::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete options_;
}

void EnumDescriptorProto::ArenaDtor(void* object) {
  EnumDescriptorProto* _this = reinterpret_cast< EnumDescriptorProto* >(object);
  (void)_this;
}
void EnumDescriptorProto::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void EnumDescriptorProto::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void EnumDescriptorProto::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.EnumDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  value_.Clear();
  reserved_range_.Clear();
  reserved_name_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(options_ != nullptr);
      options_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* EnumDescriptorProto::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.EnumDescriptorProto.name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_value(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.EnumOptions options = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_reserved_range(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string reserved_name = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 42)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_reserved_name();
            ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
            #ifndef NDEBUG
            ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.EnumDescriptorProto.reserved_name");
            #endif  // !NDEBUG
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<42>(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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* EnumDescriptorProto::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.EnumDescriptorProto.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_value_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_value(i), target, stream);
  }

  // optional .google.protobuf.EnumOptions options = 3;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::options(this), target, stream);
  }

  // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_reserved_range_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(4, this->_internal_reserved_range(i), target, stream);
  }

  // repeated string reserved_name = 5;
  for (int i = 0, n = this->_internal_reserved_name_size(); i < n; i++) {
    const auto& s = this->_internal_reserved_name(i);
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.EnumDescriptorProto.reserved_name");
    target = stream->WriteString(5, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumDescriptorProto)
  return target;
}

size_t EnumDescriptorProto::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumDescriptorProto)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
  total_size += 1UL * this->_internal_value_size();
  for (const auto& msg : this->value_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
  total_size += 1UL * this->_internal_reserved_range_size();
  for (const auto& msg : this->reserved_range_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated string reserved_name = 5;
  total_size += 1 *
      ::herogoogle::protobuf::internal::FromIntSize(reserved_name_.size());
  for (int i = 0, n = reserved_name_.size(); i < n; i++) {
    total_size += ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
      reserved_name_.Get(i));
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_name());
    }

    // optional .google.protobuf.EnumOptions options = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *options_);
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData EnumDescriptorProto::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    EnumDescriptorProto::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*EnumDescriptorProto::GetClassData() const { return &_class_data_; }

void EnumDescriptorProto::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<EnumDescriptorProto *>(to)->MergeFrom(
      static_cast<const EnumDescriptorProto &>(from));
}


void EnumDescriptorProto::MergeFrom(const EnumDescriptorProto& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumDescriptorProto)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  value_.MergeFrom(from.value_);
  reserved_range_.MergeFrom(from.reserved_range_);
  reserved_name_.MergeFrom(from.reserved_name_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_options()->::herogoogle::protobuf::EnumOptions::MergeFrom(from._internal_options());
    }
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool EnumDescriptorProto::IsInitialized() const {
  if (!::herogoogle::protobuf::internal::AllAreInitialized(value_)) return false;
  if (_internal_has_options()) {
    if (!options_->IsInitialized()) return false;
  }
  return true;
}

void EnumDescriptorProto::InternalSwap(EnumDescriptorProto* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  value_.InternalSwap(&other->value_);
  reserved_range_.InternalSwap(&other->reserved_range_);
  reserved_name_.InternalSwap(&other->reserved_name_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  swap(options_, other->options_);
}

::herogoogle::protobuf::Metadata EnumDescriptorProto::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[9]);
}

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

class EnumValueDescriptorProto::_Internal {
 public:
  using HasBits = decltype(std::declval<EnumValueDescriptorProto>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_number(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static const ::herogoogle::protobuf::EnumValueOptions& options(const EnumValueDescriptorProto* msg);
  static void set_has_options(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::herogoogle::protobuf::EnumValueOptions&
EnumValueDescriptorProto::_Internal::options(const EnumValueDescriptorProto* msg) {
  return *msg->options_;
}
EnumValueDescriptorProto::EnumValueDescriptorProto(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumValueDescriptorProto)
}
EnumValueDescriptorProto::EnumValueDescriptorProto(const EnumValueDescriptorProto& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_name()) {
    name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_options()) {
    options_ = new ::herogoogle::protobuf::EnumValueOptions(*from.options_);
  } else {
    options_ = nullptr;
  }
  number_ = from.number_;
  // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumValueDescriptorProto)
}

void EnumValueDescriptorProto::SharedCtor() {
name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&options_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&number_) -
    reinterpret_cast<char*>(&options_)) + sizeof(number_));
}

EnumValueDescriptorProto::~EnumValueDescriptorProto() {
  // @@protoc_insertion_point(destructor:google.protobuf.EnumValueDescriptorProto)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void EnumValueDescriptorProto::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete options_;
}

void EnumValueDescriptorProto::ArenaDtor(void* object) {
  EnumValueDescriptorProto* _this = reinterpret_cast< EnumValueDescriptorProto* >(object);
  (void)_this;
}
void EnumValueDescriptorProto::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void EnumValueDescriptorProto::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void EnumValueDescriptorProto::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.EnumValueDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(options_ != nullptr);
      options_->Clear();
    }
  }
  number_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* EnumValueDescriptorProto::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.EnumValueDescriptorProto.name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 number = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          _Internal::set_has_number(&has_bits);
          number_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.EnumValueOptions options = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_options(), 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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* EnumValueDescriptorProto::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumValueDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.EnumValueDescriptorProto.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // optional int32 number = 2;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_number(), target);
  }

  // optional .google.protobuf.EnumValueOptions options = 3;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::options(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumValueDescriptorProto)
  return target;
}

size_t EnumValueDescriptorProto::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumValueDescriptorProto)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_name());
    }

    // optional .google.protobuf.EnumValueOptions options = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *options_);
    }

    // optional int32 number = 2;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_number());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData EnumValueDescriptorProto::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    EnumValueDescriptorProto::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*EnumValueDescriptorProto::GetClassData() const { return &_class_data_; }

void EnumValueDescriptorProto::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<EnumValueDescriptorProto *>(to)->MergeFrom(
      static_cast<const EnumValueDescriptorProto &>(from));
}


void EnumValueDescriptorProto::MergeFrom(const EnumValueDescriptorProto& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumValueDescriptorProto)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_options()->::herogoogle::protobuf::EnumValueOptions::MergeFrom(from._internal_options());
    }
    if (cached_has_bits & 0x00000004u) {
      number_ = from.number_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool EnumValueDescriptorProto::IsInitialized() const {
  if (_internal_has_options()) {
    if (!options_->IsInitialized()) return false;
  }
  return true;
}

void EnumValueDescriptorProto::InternalSwap(EnumValueDescriptorProto* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(EnumValueDescriptorProto, number_)
      + sizeof(EnumValueDescriptorProto::number_)
      - PROTOBUF_FIELD_OFFSET(EnumValueDescriptorProto, options_)>(
          reinterpret_cast<char*>(&options_),
          reinterpret_cast<char*>(&other->options_));
}

::herogoogle::protobuf::Metadata EnumValueDescriptorProto::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[10]);
}

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

class ServiceDescriptorProto::_Internal {
 public:
  using HasBits = decltype(std::declval<ServiceDescriptorProto>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::herogoogle::protobuf::ServiceOptions& options(const ServiceDescriptorProto* msg);
  static void set_has_options(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::herogoogle::protobuf::ServiceOptions&
ServiceDescriptorProto::_Internal::options(const ServiceDescriptorProto* msg) {
  return *msg->options_;
}
ServiceDescriptorProto::ServiceDescriptorProto(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  method_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.ServiceDescriptorProto)
}
ServiceDescriptorProto::ServiceDescriptorProto(const ServiceDescriptorProto& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      method_(from.method_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_name()) {
    name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_options()) {
    options_ = new ::herogoogle::protobuf::ServiceOptions(*from.options_);
  } else {
    options_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.ServiceDescriptorProto)
}

void ServiceDescriptorProto::SharedCtor() {
name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
options_ = nullptr;
}

ServiceDescriptorProto::~ServiceDescriptorProto() {
  // @@protoc_insertion_point(destructor:google.protobuf.ServiceDescriptorProto)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void ServiceDescriptorProto::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete options_;
}

void ServiceDescriptorProto::ArenaDtor(void* object) {
  ServiceDescriptorProto* _this = reinterpret_cast< ServiceDescriptorProto* >(object);
  (void)_this;
}
void ServiceDescriptorProto::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void ServiceDescriptorProto::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ServiceDescriptorProto::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.ServiceDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  method_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(options_ != nullptr);
      options_->Clear();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* ServiceDescriptorProto::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.ServiceDescriptorProto.name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.MethodDescriptorProto method = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_method(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.ServiceOptions options = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_options(), 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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* ServiceDescriptorProto::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.ServiceDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.ServiceDescriptorProto.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // repeated .google.protobuf.MethodDescriptorProto method = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_method_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_method(i), target, stream);
  }

  // optional .google.protobuf.ServiceOptions options = 3;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        3, _Internal::options(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.ServiceDescriptorProto)
  return target;
}

size_t ServiceDescriptorProto::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.ServiceDescriptorProto)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.MethodDescriptorProto method = 2;
  total_size += 1UL * this->_internal_method_size();
  for (const auto& msg : this->method_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_name());
    }

    // optional .google.protobuf.ServiceOptions options = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *options_);
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData ServiceDescriptorProto::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    ServiceDescriptorProto::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*ServiceDescriptorProto::GetClassData() const { return &_class_data_; }

void ServiceDescriptorProto::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<ServiceDescriptorProto *>(to)->MergeFrom(
      static_cast<const ServiceDescriptorProto &>(from));
}


void ServiceDescriptorProto::MergeFrom(const ServiceDescriptorProto& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.ServiceDescriptorProto)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  method_.MergeFrom(from.method_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_options()->::herogoogle::protobuf::ServiceOptions::MergeFrom(from._internal_options());
    }
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ServiceDescriptorProto::IsInitialized() const {
  if (!::herogoogle::protobuf::internal::AllAreInitialized(method_)) return false;
  if (_internal_has_options()) {
    if (!options_->IsInitialized()) return false;
  }
  return true;
}

void ServiceDescriptorProto::InternalSwap(ServiceDescriptorProto* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  method_.InternalSwap(&other->method_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  swap(options_, other->options_);
}

::herogoogle::protobuf::Metadata ServiceDescriptorProto::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[11]);
}

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

class MethodDescriptorProto::_Internal {
 public:
  using HasBits = decltype(std::declval<MethodDescriptorProto>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_input_type(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_output_type(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static const ::herogoogle::protobuf::MethodOptions& options(const MethodDescriptorProto* msg);
  static void set_has_options(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_client_streaming(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_server_streaming(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
};

const ::herogoogle::protobuf::MethodOptions&
MethodDescriptorProto::_Internal::options(const MethodDescriptorProto* msg) {
  return *msg->options_;
}
MethodDescriptorProto::MethodDescriptorProto(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.MethodDescriptorProto)
}
MethodDescriptorProto::MethodDescriptorProto(const MethodDescriptorProto& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_name()) {
    name_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  input_type_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_input_type()) {
    input_type_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_input_type(), 
      GetArenaForAllocation());
  }
  output_type_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_output_type()) {
    output_type_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_output_type(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_options()) {
    options_ = new ::herogoogle::protobuf::MethodOptions(*from.options_);
  } else {
    options_ = nullptr;
  }
  ::memcpy(&client_streaming_, &from.client_streaming_,
    static_cast<size_t>(reinterpret_cast<char*>(&server_streaming_) -
    reinterpret_cast<char*>(&client_streaming_)) + sizeof(server_streaming_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.MethodDescriptorProto)
}

void MethodDescriptorProto::SharedCtor() {
name_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
input_type_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
output_type_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&options_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&server_streaming_) -
    reinterpret_cast<char*>(&options_)) + sizeof(server_streaming_));
}

MethodDescriptorProto::~MethodDescriptorProto() {
  // @@protoc_insertion_point(destructor:google.protobuf.MethodDescriptorProto)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void MethodDescriptorProto::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  input_type_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  output_type_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete options_;
}

void MethodDescriptorProto::ArenaDtor(void* object) {
  MethodDescriptorProto* _this = reinterpret_cast< MethodDescriptorProto* >(object);
  (void)_this;
}
void MethodDescriptorProto::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void MethodDescriptorProto::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void MethodDescriptorProto::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.MethodDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      input_type_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      output_type_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      GOOGLE_DCHECK(options_ != nullptr);
      options_->Clear();
    }
  }
  ::memset(&client_streaming_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&server_streaming_) -
      reinterpret_cast<char*>(&client_streaming_)) + sizeof(server_streaming_));
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* MethodDescriptorProto::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.MethodDescriptorProto.name");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string input_type = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          auto str = _internal_mutable_input_type();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.MethodDescriptorProto.input_type");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string output_type = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          auto str = _internal_mutable_output_type();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.MethodDescriptorProto.output_type");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.MethodOptions options = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool client_streaming = 5 [default = false];
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 40)) {
          _Internal::set_has_client_streaming(&has_bits);
          client_streaming_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool server_streaming = 6 [default = false];
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 48)) {
          _Internal::set_has_server_streaming(&has_bits);
          server_streaming_ = ::herogoogle::protobuf::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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* MethodDescriptorProto::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.MethodDescriptorProto)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.MethodDescriptorProto.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // optional string input_type = 2;
  if (cached_has_bits & 0x00000002u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_input_type().data(), static_cast<int>(this->_internal_input_type().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.MethodDescriptorProto.input_type");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_input_type(), target);
  }

  // optional string output_type = 3;
  if (cached_has_bits & 0x00000004u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_output_type().data(), static_cast<int>(this->_internal_output_type().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.MethodDescriptorProto.output_type");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_output_type(), target);
  }

  // optional .google.protobuf.MethodOptions options = 4;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        4, _Internal::options(this), target, stream);
  }

  // optional bool client_streaming = 5 [default = false];
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_client_streaming(), target);
  }

  // optional bool server_streaming = 6 [default = false];
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_server_streaming(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.MethodDescriptorProto)
  return target;
}

size_t MethodDescriptorProto::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.MethodDescriptorProto)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_name());
    }

    // optional string input_type = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_input_type());
    }

    // optional string output_type = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_output_type());
    }

    // optional .google.protobuf.MethodOptions options = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
          *options_);
    }

    // optional bool client_streaming = 5 [default = false];
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 + 1;
    }

    // optional bool server_streaming = 6 [default = false];
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 + 1;
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData MethodDescriptorProto::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    MethodDescriptorProto::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*MethodDescriptorProto::GetClassData() const { return &_class_data_; }

void MethodDescriptorProto::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<MethodDescriptorProto *>(to)->MergeFrom(
      static_cast<const MethodDescriptorProto &>(from));
}


void MethodDescriptorProto::MergeFrom(const MethodDescriptorProto& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.MethodDescriptorProto)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_name(from._internal_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_set_input_type(from._internal_input_type());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_set_output_type(from._internal_output_type());
    }
    if (cached_has_bits & 0x00000008u) {
      _internal_mutable_options()->::herogoogle::protobuf::MethodOptions::MergeFrom(from._internal_options());
    }
    if (cached_has_bits & 0x00000010u) {
      client_streaming_ = from.client_streaming_;
    }
    if (cached_has_bits & 0x00000020u) {
      server_streaming_ = from.server_streaming_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool MethodDescriptorProto::IsInitialized() const {
  if (_internal_has_options()) {
    if (!options_->IsInitialized()) return false;
  }
  return true;
}

void MethodDescriptorProto::InternalSwap(MethodDescriptorProto* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &input_type_, lhs_arena,
      &other->input_type_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &output_type_, lhs_arena,
      &other->output_type_, rhs_arena
  );
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MethodDescriptorProto, server_streaming_)
      + sizeof(MethodDescriptorProto::server_streaming_)
      - PROTOBUF_FIELD_OFFSET(MethodDescriptorProto, options_)>(
          reinterpret_cast<char*>(&options_),
          reinterpret_cast<char*>(&other->options_));
}

::herogoogle::protobuf::Metadata MethodDescriptorProto::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[12]);
}

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

class FileOptions::_Internal {
 public:
  using HasBits = decltype(std::declval<FileOptions>()._has_bits_);
  static void set_has_java_package(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_java_outer_classname(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_java_multiple_files(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_java_generate_equals_and_hash(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_java_string_check_utf8(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static void set_has_optimize_for(HasBits* has_bits) {
    (*has_bits)[0] |= 262144u;
  }
  static void set_has_go_package(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_cc_generic_services(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_java_generic_services(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_py_generic_services(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static void set_has_php_generic_services(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static void set_has_deprecated(HasBits* has_bits) {
    (*has_bits)[0] |= 131072u;
  }
  static void set_has_cc_enable_arenas(HasBits* has_bits) {
    (*has_bits)[0] |= 524288u;
  }
  static void set_has_objc_class_prefix(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_csharp_namespace(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_swift_prefix(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_php_class_prefix(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_php_namespace(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_php_metadata_namespace(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_ruby_package(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
};

FileOptions::FileOptions(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  _extensions_(arena),
  uninterpreted_option_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.FileOptions)
}
FileOptions::FileOptions(const FileOptions& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      uninterpreted_option_(from.uninterpreted_option_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  java_package_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_java_package()) {
    java_package_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_java_package(), 
      GetArenaForAllocation());
  }
  java_outer_classname_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_java_outer_classname()) {
    java_outer_classname_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_java_outer_classname(), 
      GetArenaForAllocation());
  }
  go_package_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_go_package()) {
    go_package_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_go_package(), 
      GetArenaForAllocation());
  }
  objc_class_prefix_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_objc_class_prefix()) {
    objc_class_prefix_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_objc_class_prefix(), 
      GetArenaForAllocation());
  }
  csharp_namespace_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_csharp_namespace()) {
    csharp_namespace_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_csharp_namespace(), 
      GetArenaForAllocation());
  }
  swift_prefix_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_swift_prefix()) {
    swift_prefix_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_swift_prefix(), 
      GetArenaForAllocation());
  }
  php_class_prefix_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_php_class_prefix()) {
    php_class_prefix_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_php_class_prefix(), 
      GetArenaForAllocation());
  }
  php_namespace_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_php_namespace()) {
    php_namespace_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_php_namespace(), 
      GetArenaForAllocation());
  }
  php_metadata_namespace_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_php_metadata_namespace()) {
    php_metadata_namespace_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_php_metadata_namespace(), 
      GetArenaForAllocation());
  }
  ruby_package_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_ruby_package()) {
    ruby_package_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_ruby_package(), 
      GetArenaForAllocation());
  }
  ::memcpy(&java_multiple_files_, &from.java_multiple_files_,
    static_cast<size_t>(reinterpret_cast<char*>(&cc_enable_arenas_) -
    reinterpret_cast<char*>(&java_multiple_files_)) + sizeof(cc_enable_arenas_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.FileOptions)
}

void FileOptions::SharedCtor() {
java_package_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
java_outer_classname_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
go_package_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
objc_class_prefix_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
csharp_namespace_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
swift_prefix_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
php_class_prefix_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
php_namespace_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
php_metadata_namespace_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
ruby_package_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&java_multiple_files_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&deprecated_) -
    reinterpret_cast<char*>(&java_multiple_files_)) + sizeof(deprecated_));
optimize_for_ = 1;
cc_enable_arenas_ = true;
}

FileOptions::~FileOptions() {
  // @@protoc_insertion_point(destructor:google.protobuf.FileOptions)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void FileOptions::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  java_package_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  java_outer_classname_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  go_package_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  objc_class_prefix_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  csharp_namespace_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  swift_prefix_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  php_class_prefix_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  php_namespace_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  php_metadata_namespace_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  ruby_package_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

void FileOptions::ArenaDtor(void* object) {
  FileOptions* _this = reinterpret_cast< FileOptions* >(object);
  (void)_this;
}
void FileOptions::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void FileOptions::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void FileOptions::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.FileOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _extensions_.Clear();
  uninterpreted_option_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      java_package_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      java_outer_classname_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      go_package_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      objc_class_prefix_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000010u) {
      csharp_namespace_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000020u) {
      swift_prefix_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000040u) {
      php_class_prefix_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000080u) {
      php_namespace_.ClearNonDefaultToEmpty();
    }
  }
  if (cached_has_bits & 0x00000300u) {
    if (cached_has_bits & 0x00000100u) {
      php_metadata_namespace_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000200u) {
      ruby_package_.ClearNonDefaultToEmpty();
    }
  }
  if (cached_has_bits & 0x0000fc00u) {
    ::memset(&java_multiple_files_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&py_generic_services_) -
        reinterpret_cast<char*>(&java_multiple_files_)) + sizeof(py_generic_services_));
  }
  if (cached_has_bits & 0x000f0000u) {
    ::memset(&php_generic_services_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&deprecated_) -
        reinterpret_cast<char*>(&php_generic_services_)) + sizeof(deprecated_));
    optimize_for_ = 1;
    cc_enable_arenas_ = true;
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* FileOptions::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string java_package = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_java_package();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.java_package");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string java_outer_classname = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 66)) {
          auto str = _internal_mutable_java_outer_classname();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.java_outer_classname");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 72)) {
          ::herogoogle::protobuf::uint64 val = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::herogoogle::protobuf::FileOptions_OptimizeMode_IsValid(val))) {
            _internal_set_optimize_for(static_cast<::herogoogle::protobuf::FileOptions_OptimizeMode>(val));
          } else {
            ::herogoogle::protobuf::internal::WriteVarint(9, val, mutable_unknown_fields());
          }
        } else
          goto handle_unusual;
        continue;
      // optional bool java_multiple_files = 10 [default = false];
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 80)) {
          _Internal::set_has_java_multiple_files(&has_bits);
          java_multiple_files_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string go_package = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 90)) {
          auto str = _internal_mutable_go_package();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.go_package");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool cc_generic_services = 16 [default = false];
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 128)) {
          _Internal::set_has_cc_generic_services(&has_bits);
          cc_generic_services_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool java_generic_services = 17 [default = false];
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 136)) {
          _Internal::set_has_java_generic_services(&has_bits);
          java_generic_services_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool py_generic_services = 18 [default = false];
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 144)) {
          _Internal::set_has_py_generic_services(&has_bits);
          py_generic_services_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 160)) {
          _Internal::set_has_java_generate_equals_and_hash(&has_bits);
          java_generate_equals_and_hash_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool deprecated = 23 [default = false];
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 184)) {
          _Internal::set_has_deprecated(&has_bits);
          deprecated_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool java_string_check_utf8 = 27 [default = false];
      case 27:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 216)) {
          _Internal::set_has_java_string_check_utf8(&has_bits);
          java_string_check_utf8_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool cc_enable_arenas = 31 [default = true];
      case 31:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 248)) {
          _Internal::set_has_cc_enable_arenas(&has_bits);
          cc_enable_arenas_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string objc_class_prefix = 36;
      case 36:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 34)) {
          auto str = _internal_mutable_objc_class_prefix();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.objc_class_prefix");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string csharp_namespace = 37;
      case 37:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 42)) {
          auto str = _internal_mutable_csharp_namespace();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.csharp_namespace");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string swift_prefix = 39;
      case 39:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          auto str = _internal_mutable_swift_prefix();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.swift_prefix");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string php_class_prefix = 40;
      case 40:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 66)) {
          auto str = _internal_mutable_php_class_prefix();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.php_class_prefix");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string php_namespace = 41;
      case 41:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 74)) {
          auto str = _internal_mutable_php_namespace();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.php_namespace");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool php_generic_services = 42 [default = false];
      case 42:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 80)) {
          _Internal::set_has_php_generic_services(&has_bits);
          php_generic_services_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string php_metadata_namespace = 44;
      case 44:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 98)) {
          auto str = _internal_mutable_php_metadata_namespace();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.php_metadata_namespace");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string ruby_package = 45;
      case 45:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 106)) {
          auto str = _internal_mutable_ruby_package();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.FileOptions.ruby_package");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      case 999:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<7994>(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;
    }
    if ((8000u <= tag)) {
      ptr = _extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
      CHK_(ptr != nullptr);
      continue;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* FileOptions::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FileOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string java_package = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_java_package().data(), static_cast<int>(this->_internal_java_package().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.java_package");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_java_package(), target);
  }

  // optional string java_outer_classname = 8;
  if (cached_has_bits & 0x00000002u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_java_outer_classname().data(), static_cast<int>(this->_internal_java_outer_classname().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.java_outer_classname");
    target = stream->WriteStringMaybeAliased(
        8, this->_internal_java_outer_classname(), target);
  }

  // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
  if (cached_has_bits & 0x00040000u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteEnumToArray(
      9, this->_internal_optimize_for(), target);
  }

  // optional bool java_multiple_files = 10 [default = false];
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(10, this->_internal_java_multiple_files(), target);
  }

  // optional string go_package = 11;
  if (cached_has_bits & 0x00000004u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_go_package().data(), static_cast<int>(this->_internal_go_package().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.go_package");
    target = stream->WriteStringMaybeAliased(
        11, this->_internal_go_package(), target);
  }

  // optional bool cc_generic_services = 16 [default = false];
  if (cached_has_bits & 0x00002000u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(16, this->_internal_cc_generic_services(), target);
  }

  // optional bool java_generic_services = 17 [default = false];
  if (cached_has_bits & 0x00004000u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(17, this->_internal_java_generic_services(), target);
  }

  // optional bool py_generic_services = 18 [default = false];
  if (cached_has_bits & 0x00008000u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(18, this->_internal_py_generic_services(), target);
  }

  // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
  if (cached_has_bits & 0x00000800u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(20, this->_internal_java_generate_equals_and_hash(), target);
  }

  // optional bool deprecated = 23 [default = false];
  if (cached_has_bits & 0x00020000u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(23, this->_internal_deprecated(), target);
  }

  // optional bool java_string_check_utf8 = 27 [default = false];
  if (cached_has_bits & 0x00001000u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(27, this->_internal_java_string_check_utf8(), target);
  }

  // optional bool cc_enable_arenas = 31 [default = true];
  if (cached_has_bits & 0x00080000u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(31, this->_internal_cc_enable_arenas(), target);
  }

  // optional string objc_class_prefix = 36;
  if (cached_has_bits & 0x00000008u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_objc_class_prefix().data(), static_cast<int>(this->_internal_objc_class_prefix().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.objc_class_prefix");
    target = stream->WriteStringMaybeAliased(
        36, this->_internal_objc_class_prefix(), target);
  }

  // optional string csharp_namespace = 37;
  if (cached_has_bits & 0x00000010u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_csharp_namespace().data(), static_cast<int>(this->_internal_csharp_namespace().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.csharp_namespace");
    target = stream->WriteStringMaybeAliased(
        37, this->_internal_csharp_namespace(), target);
  }

  // optional string swift_prefix = 39;
  if (cached_has_bits & 0x00000020u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_swift_prefix().data(), static_cast<int>(this->_internal_swift_prefix().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.swift_prefix");
    target = stream->WriteStringMaybeAliased(
        39, this->_internal_swift_prefix(), target);
  }

  // optional string php_class_prefix = 40;
  if (cached_has_bits & 0x00000040u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_php_class_prefix().data(), static_cast<int>(this->_internal_php_class_prefix().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.php_class_prefix");
    target = stream->WriteStringMaybeAliased(
        40, this->_internal_php_class_prefix(), target);
  }

  // optional string php_namespace = 41;
  if (cached_has_bits & 0x00000080u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_php_namespace().data(), static_cast<int>(this->_internal_php_namespace().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.php_namespace");
    target = stream->WriteStringMaybeAliased(
        41, this->_internal_php_namespace(), target);
  }

  // optional bool php_generic_services = 42 [default = false];
  if (cached_has_bits & 0x00010000u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(42, this->_internal_php_generic_services(), target);
  }

  // optional string php_metadata_namespace = 44;
  if (cached_has_bits & 0x00000100u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_php_metadata_namespace().data(), static_cast<int>(this->_internal_php_metadata_namespace().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.php_metadata_namespace");
    target = stream->WriteStringMaybeAliased(
        44, this->_internal_php_metadata_namespace(), target);
  }

  // optional string ruby_package = 45;
  if (cached_has_bits & 0x00000200u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_ruby_package().data(), static_cast<int>(this->_internal_ruby_package().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.FileOptions.ruby_package");
    target = stream->WriteStringMaybeAliased(
        45, this->_internal_ruby_package(), target);
  }

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_uninterpreted_option_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(999, this->_internal_uninterpreted_option(i), target, stream);
  }

  // Extension range [1000, 536870912)
  target = _extensions_._InternalSerialize(
  internal_default_instance(), 1000, 536870912, target, stream);

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FileOptions)
  return target;
}

size_t FileOptions::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.FileOptions)
  size_t total_size = 0;

  total_size += _extensions_.ByteSize();

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  total_size += 2UL * this->_internal_uninterpreted_option_size();
  for (const auto& msg : this->uninterpreted_option_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional string java_package = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_java_package());
    }

    // optional string java_outer_classname = 8;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_java_outer_classname());
    }

    // optional string go_package = 11;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_go_package());
    }

    // optional string objc_class_prefix = 36;
    if (cached_has_bits & 0x00000008u) {
      total_size += 2 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_objc_class_prefix());
    }

    // optional string csharp_namespace = 37;
    if (cached_has_bits & 0x00000010u) {
      total_size += 2 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_csharp_namespace());
    }

    // optional string swift_prefix = 39;
    if (cached_has_bits & 0x00000020u) {
      total_size += 2 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_swift_prefix());
    }

    // optional string php_class_prefix = 40;
    if (cached_has_bits & 0x00000040u) {
      total_size += 2 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_php_class_prefix());
    }

    // optional string php_namespace = 41;
    if (cached_has_bits & 0x00000080u) {
      total_size += 2 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_php_namespace());
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // optional string php_metadata_namespace = 44;
    if (cached_has_bits & 0x00000100u) {
      total_size += 2 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_php_metadata_namespace());
    }

    // optional string ruby_package = 45;
    if (cached_has_bits & 0x00000200u) {
      total_size += 2 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_ruby_package());
    }

    // optional bool java_multiple_files = 10 [default = false];
    if (cached_has_bits & 0x00000400u) {
      total_size += 1 + 1;
    }

    // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
    if (cached_has_bits & 0x00000800u) {
      total_size += 2 + 1;
    }

    // optional bool java_string_check_utf8 = 27 [default = false];
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 + 1;
    }

    // optional bool cc_generic_services = 16 [default = false];
    if (cached_has_bits & 0x00002000u) {
      total_size += 2 + 1;
    }

    // optional bool java_generic_services = 17 [default = false];
    if (cached_has_bits & 0x00004000u) {
      total_size += 2 + 1;
    }

    // optional bool py_generic_services = 18 [default = false];
    if (cached_has_bits & 0x00008000u) {
      total_size += 2 + 1;
    }

  }
  if (cached_has_bits & 0x000f0000u) {
    // optional bool php_generic_services = 42 [default = false];
    if (cached_has_bits & 0x00010000u) {
      total_size += 2 + 1;
    }

    // optional bool deprecated = 23 [default = false];
    if (cached_has_bits & 0x00020000u) {
      total_size += 2 + 1;
    }

    // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
    if (cached_has_bits & 0x00040000u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::EnumSize(this->_internal_optimize_for());
    }

    // optional bool cc_enable_arenas = 31 [default = true];
    if (cached_has_bits & 0x00080000u) {
      total_size += 2 + 1;
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData FileOptions::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    FileOptions::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*FileOptions::GetClassData() const { return &_class_data_; }

void FileOptions::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<FileOptions *>(to)->MergeFrom(
      static_cast<const FileOptions &>(from));
}


void FileOptions::MergeFrom(const FileOptions& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FileOptions)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_java_package(from._internal_java_package());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_set_java_outer_classname(from._internal_java_outer_classname());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_set_go_package(from._internal_go_package());
    }
    if (cached_has_bits & 0x00000008u) {
      _internal_set_objc_class_prefix(from._internal_objc_class_prefix());
    }
    if (cached_has_bits & 0x00000010u) {
      _internal_set_csharp_namespace(from._internal_csharp_namespace());
    }
    if (cached_has_bits & 0x00000020u) {
      _internal_set_swift_prefix(from._internal_swift_prefix());
    }
    if (cached_has_bits & 0x00000040u) {
      _internal_set_php_class_prefix(from._internal_php_class_prefix());
    }
    if (cached_has_bits & 0x00000080u) {
      _internal_set_php_namespace(from._internal_php_namespace());
    }
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      _internal_set_php_metadata_namespace(from._internal_php_metadata_namespace());
    }
    if (cached_has_bits & 0x00000200u) {
      _internal_set_ruby_package(from._internal_ruby_package());
    }
    if (cached_has_bits & 0x00000400u) {
      java_multiple_files_ = from.java_multiple_files_;
    }
    if (cached_has_bits & 0x00000800u) {
      java_generate_equals_and_hash_ = from.java_generate_equals_and_hash_;
    }
    if (cached_has_bits & 0x00001000u) {
      java_string_check_utf8_ = from.java_string_check_utf8_;
    }
    if (cached_has_bits & 0x00002000u) {
      cc_generic_services_ = from.cc_generic_services_;
    }
    if (cached_has_bits & 0x00004000u) {
      java_generic_services_ = from.java_generic_services_;
    }
    if (cached_has_bits & 0x00008000u) {
      py_generic_services_ = from.py_generic_services_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x000f0000u) {
    if (cached_has_bits & 0x00010000u) {
      php_generic_services_ = from.php_generic_services_;
    }
    if (cached_has_bits & 0x00020000u) {
      deprecated_ = from.deprecated_;
    }
    if (cached_has_bits & 0x00040000u) {
      optimize_for_ = from.optimize_for_;
    }
    if (cached_has_bits & 0x00080000u) {
      cc_enable_arenas_ = from.cc_enable_arenas_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _extensions_.MergeFrom(from._extensions_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool FileOptions::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if (!::herogoogle::protobuf::internal::AllAreInitialized(uninterpreted_option_)) return false;
  return true;
}

void FileOptions::InternalSwap(FileOptions* other) {
  using std::swap;
  _extensions_.InternalSwap(&other->_extensions_);
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &java_package_, lhs_arena,
      &other->java_package_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &java_outer_classname_, lhs_arena,
      &other->java_outer_classname_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &go_package_, lhs_arena,
      &other->go_package_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &objc_class_prefix_, lhs_arena,
      &other->objc_class_prefix_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &csharp_namespace_, lhs_arena,
      &other->csharp_namespace_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &swift_prefix_, lhs_arena,
      &other->swift_prefix_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &php_class_prefix_, lhs_arena,
      &other->php_class_prefix_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &php_namespace_, lhs_arena,
      &other->php_namespace_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &php_metadata_namespace_, lhs_arena,
      &other->php_metadata_namespace_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &ruby_package_, lhs_arena,
      &other->ruby_package_, rhs_arena
  );
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(FileOptions, deprecated_)
      + sizeof(FileOptions::deprecated_)
      - PROTOBUF_FIELD_OFFSET(FileOptions, java_multiple_files_)>(
          reinterpret_cast<char*>(&java_multiple_files_),
          reinterpret_cast<char*>(&other->java_multiple_files_));
  swap(optimize_for_, other->optimize_for_);
  swap(cc_enable_arenas_, other->cc_enable_arenas_);
}

::herogoogle::protobuf::Metadata FileOptions::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[13]);
}

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

class MessageOptions::_Internal {
 public:
  using HasBits = decltype(std::declval<MessageOptions>()._has_bits_);
  static void set_has_message_set_wire_format(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_no_standard_descriptor_accessor(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_deprecated(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_map_entry(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
};

MessageOptions::MessageOptions(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  _extensions_(arena),
  uninterpreted_option_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.MessageOptions)
}
MessageOptions::MessageOptions(const MessageOptions& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      uninterpreted_option_(from.uninterpreted_option_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  ::memcpy(&message_set_wire_format_, &from.message_set_wire_format_,
    static_cast<size_t>(reinterpret_cast<char*>(&map_entry_) -
    reinterpret_cast<char*>(&message_set_wire_format_)) + sizeof(map_entry_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.MessageOptions)
}

void MessageOptions::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&message_set_wire_format_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&map_entry_) -
    reinterpret_cast<char*>(&message_set_wire_format_)) + sizeof(map_entry_));
}

MessageOptions::~MessageOptions() {
  // @@protoc_insertion_point(destructor:google.protobuf.MessageOptions)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void MessageOptions::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void MessageOptions::ArenaDtor(void* object) {
  MessageOptions* _this = reinterpret_cast< MessageOptions* >(object);
  (void)_this;
}
void MessageOptions::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void MessageOptions::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void MessageOptions::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.MessageOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _extensions_.Clear();
  uninterpreted_option_.Clear();
  ::memset(&message_set_wire_format_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&map_entry_) -
      reinterpret_cast<char*>(&message_set_wire_format_)) + sizeof(map_entry_));
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* MessageOptions::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool message_set_wire_format = 1 [default = false];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 8)) {
          _Internal::set_has_message_set_wire_format(&has_bits);
          message_set_wire_format_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool no_standard_descriptor_accessor = 2 [default = false];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          _Internal::set_has_no_standard_descriptor_accessor(&has_bits);
          no_standard_descriptor_accessor_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool deprecated = 3 [default = false];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 24)) {
          _Internal::set_has_deprecated(&has_bits);
          deprecated_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool map_entry = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 56)) {
          _Internal::set_has_map_entry(&has_bits);
          map_entry_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      case 999:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<7994>(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;
    }
    if ((8000u <= tag)) {
      ptr = _extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
      CHK_(ptr != nullptr);
      continue;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* MessageOptions::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.MessageOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool message_set_wire_format = 1 [default = false];
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_message_set_wire_format(), target);
  }

  // optional bool no_standard_descriptor_accessor = 2 [default = false];
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_no_standard_descriptor_accessor(), target);
  }

  // optional bool deprecated = 3 [default = false];
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_deprecated(), target);
  }

  // optional bool map_entry = 7;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->_internal_map_entry(), target);
  }

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_uninterpreted_option_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(999, this->_internal_uninterpreted_option(i), target, stream);
  }

  // Extension range [1000, 536870912)
  target = _extensions_._InternalSerialize(
  internal_default_instance(), 1000, 536870912, target, stream);

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.MessageOptions)
  return target;
}

size_t MessageOptions::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.MessageOptions)
  size_t total_size = 0;

  total_size += _extensions_.ByteSize();

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  total_size += 2UL * this->_internal_uninterpreted_option_size();
  for (const auto& msg : this->uninterpreted_option_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    // optional bool message_set_wire_format = 1 [default = false];
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 + 1;
    }

    // optional bool no_standard_descriptor_accessor = 2 [default = false];
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 1;
    }

    // optional bool deprecated = 3 [default = false];
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 + 1;
    }

    // optional bool map_entry = 7;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 + 1;
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData MessageOptions::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    MessageOptions::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*MessageOptions::GetClassData() const { return &_class_data_; }

void MessageOptions::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<MessageOptions *>(to)->MergeFrom(
      static_cast<const MessageOptions &>(from));
}


void MessageOptions::MergeFrom(const MessageOptions& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.MessageOptions)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      message_set_wire_format_ = from.message_set_wire_format_;
    }
    if (cached_has_bits & 0x00000002u) {
      no_standard_descriptor_accessor_ = from.no_standard_descriptor_accessor_;
    }
    if (cached_has_bits & 0x00000004u) {
      deprecated_ = from.deprecated_;
    }
    if (cached_has_bits & 0x00000008u) {
      map_entry_ = from.map_entry_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _extensions_.MergeFrom(from._extensions_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool MessageOptions::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if (!::herogoogle::protobuf::internal::AllAreInitialized(uninterpreted_option_)) return false;
  return true;
}

void MessageOptions::InternalSwap(MessageOptions* other) {
  using std::swap;
  _extensions_.InternalSwap(&other->_extensions_);
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MessageOptions, map_entry_)
      + sizeof(MessageOptions::map_entry_)
      - PROTOBUF_FIELD_OFFSET(MessageOptions, message_set_wire_format_)>(
          reinterpret_cast<char*>(&message_set_wire_format_),
          reinterpret_cast<char*>(&other->message_set_wire_format_));
}

::herogoogle::protobuf::Metadata MessageOptions::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[14]);
}

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

class FieldOptions::_Internal {
 public:
  using HasBits = decltype(std::declval<FieldOptions>()._has_bits_);
  static void set_has_ctype(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_packed(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_jstype(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_lazy(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_deprecated(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_weak(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
};

FieldOptions::FieldOptions(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  _extensions_(arena),
  uninterpreted_option_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.FieldOptions)
}
FieldOptions::FieldOptions(const FieldOptions& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      uninterpreted_option_(from.uninterpreted_option_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  ::memcpy(&ctype_, &from.ctype_,
    static_cast<size_t>(reinterpret_cast<char*>(&jstype_) -
    reinterpret_cast<char*>(&ctype_)) + sizeof(jstype_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.FieldOptions)
}

void FieldOptions::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&ctype_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&jstype_) -
    reinterpret_cast<char*>(&ctype_)) + sizeof(jstype_));
}

FieldOptions::~FieldOptions() {
  // @@protoc_insertion_point(destructor:google.protobuf.FieldOptions)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void FieldOptions::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void FieldOptions::ArenaDtor(void* object) {
  FieldOptions* _this = reinterpret_cast< FieldOptions* >(object);
  (void)_this;
}
void FieldOptions::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void FieldOptions::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void FieldOptions::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.FieldOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _extensions_.Clear();
  uninterpreted_option_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    ::memset(&ctype_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&jstype_) -
        reinterpret_cast<char*>(&ctype_)) + sizeof(jstype_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* FieldOptions::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 8)) {
          ::herogoogle::protobuf::uint64 val = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::herogoogle::protobuf::FieldOptions_CType_IsValid(val))) {
            _internal_set_ctype(static_cast<::herogoogle::protobuf::FieldOptions_CType>(val));
          } else {
            ::herogoogle::protobuf::internal::WriteVarint(1, val, mutable_unknown_fields());
          }
        } else
          goto handle_unusual;
        continue;
      // optional bool packed = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          _Internal::set_has_packed(&has_bits);
          packed_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool deprecated = 3 [default = false];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 24)) {
          _Internal::set_has_deprecated(&has_bits);
          deprecated_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool lazy = 5 [default = false];
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 40)) {
          _Internal::set_has_lazy(&has_bits);
          lazy_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 48)) {
          ::herogoogle::protobuf::uint64 val = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::herogoogle::protobuf::FieldOptions_JSType_IsValid(val))) {
            _internal_set_jstype(static_cast<::herogoogle::protobuf::FieldOptions_JSType>(val));
          } else {
            ::herogoogle::protobuf::internal::WriteVarint(6, val, mutable_unknown_fields());
          }
        } else
          goto handle_unusual;
        continue;
      // optional bool weak = 10 [default = false];
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 80)) {
          _Internal::set_has_weak(&has_bits);
          weak_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      case 999:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<7994>(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;
    }
    if ((8000u <= tag)) {
      ptr = _extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
      CHK_(ptr != nullptr);
      continue;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* FieldOptions::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.FieldOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteEnumToArray(
      1, this->_internal_ctype(), target);
  }

  // optional bool packed = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_packed(), target);
  }

  // optional bool deprecated = 3 [default = false];
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_deprecated(), target);
  }

  // optional bool lazy = 5 [default = false];
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_lazy(), target);
  }

  // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteEnumToArray(
      6, this->_internal_jstype(), target);
  }

  // optional bool weak = 10 [default = false];
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(10, this->_internal_weak(), target);
  }

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_uninterpreted_option_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(999, this->_internal_uninterpreted_option(i), target, stream);
  }

  // Extension range [1000, 536870912)
  target = _extensions_._InternalSerialize(
  internal_default_instance(), 1000, 536870912, target, stream);

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FieldOptions)
  return target;
}

size_t FieldOptions::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.FieldOptions)
  size_t total_size = 0;

  total_size += _extensions_.ByteSize();

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  total_size += 2UL * this->_internal_uninterpreted_option_size();
  for (const auto& msg : this->uninterpreted_option_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::EnumSize(this->_internal_ctype());
    }

    // optional bool packed = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 1;
    }

    // optional bool lazy = 5 [default = false];
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 + 1;
    }

    // optional bool deprecated = 3 [default = false];
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 + 1;
    }

    // optional bool weak = 10 [default = false];
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 + 1;
    }

    // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::EnumSize(this->_internal_jstype());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData FieldOptions::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    FieldOptions::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*FieldOptions::GetClassData() const { return &_class_data_; }

void FieldOptions::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<FieldOptions *>(to)->MergeFrom(
      static_cast<const FieldOptions &>(from));
}


void FieldOptions::MergeFrom(const FieldOptions& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.FieldOptions)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    if (cached_has_bits & 0x00000001u) {
      ctype_ = from.ctype_;
    }
    if (cached_has_bits & 0x00000002u) {
      packed_ = from.packed_;
    }
    if (cached_has_bits & 0x00000004u) {
      lazy_ = from.lazy_;
    }
    if (cached_has_bits & 0x00000008u) {
      deprecated_ = from.deprecated_;
    }
    if (cached_has_bits & 0x00000010u) {
      weak_ = from.weak_;
    }
    if (cached_has_bits & 0x00000020u) {
      jstype_ = from.jstype_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _extensions_.MergeFrom(from._extensions_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool FieldOptions::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if (!::herogoogle::protobuf::internal::AllAreInitialized(uninterpreted_option_)) return false;
  return true;
}

void FieldOptions::InternalSwap(FieldOptions* other) {
  using std::swap;
  _extensions_.InternalSwap(&other->_extensions_);
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(FieldOptions, jstype_)
      + sizeof(FieldOptions::jstype_)
      - PROTOBUF_FIELD_OFFSET(FieldOptions, ctype_)>(
          reinterpret_cast<char*>(&ctype_),
          reinterpret_cast<char*>(&other->ctype_));
}

::herogoogle::protobuf::Metadata FieldOptions::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[15]);
}

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

class OneofOptions::_Internal {
 public:
};

OneofOptions::OneofOptions(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  _extensions_(arena),
  uninterpreted_option_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.OneofOptions)
}
OneofOptions::OneofOptions(const OneofOptions& from)
  : ::herogoogle::protobuf::Message(),
      uninterpreted_option_(from.uninterpreted_option_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.OneofOptions)
}

void OneofOptions::SharedCtor() {
}

OneofOptions::~OneofOptions() {
  // @@protoc_insertion_point(destructor:google.protobuf.OneofOptions)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void OneofOptions::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void OneofOptions::ArenaDtor(void* object) {
  OneofOptions* _this = reinterpret_cast< OneofOptions* >(object);
  (void)_this;
}
void OneofOptions::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void OneofOptions::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void OneofOptions::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.OneofOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _extensions_.Clear();
  uninterpreted_option_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* OneofOptions::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      case 999:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<7994>(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;
    }
    if ((8000u <= tag)) {
      ptr = _extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
      CHK_(ptr != nullptr);
      continue;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* OneofOptions::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.OneofOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_uninterpreted_option_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(999, this->_internal_uninterpreted_option(i), target, stream);
  }

  // Extension range [1000, 536870912)
  target = _extensions_._InternalSerialize(
  internal_default_instance(), 1000, 536870912, target, stream);

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.OneofOptions)
  return target;
}

size_t OneofOptions::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.OneofOptions)
  size_t total_size = 0;

  total_size += _extensions_.ByteSize();

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  total_size += 2UL * this->_internal_uninterpreted_option_size();
  for (const auto& msg : this->uninterpreted_option_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData OneofOptions::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    OneofOptions::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*OneofOptions::GetClassData() const { return &_class_data_; }

void OneofOptions::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<OneofOptions *>(to)->MergeFrom(
      static_cast<const OneofOptions &>(from));
}


void OneofOptions::MergeFrom(const OneofOptions& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.OneofOptions)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  _extensions_.MergeFrom(from._extensions_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool OneofOptions::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if (!::herogoogle::protobuf::internal::AllAreInitialized(uninterpreted_option_)) return false;
  return true;
}

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

::herogoogle::protobuf::Metadata OneofOptions::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[16]);
}

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

class EnumOptions::_Internal {
 public:
  using HasBits = decltype(std::declval<EnumOptions>()._has_bits_);
  static void set_has_allow_alias(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_deprecated(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

EnumOptions::EnumOptions(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  _extensions_(arena),
  uninterpreted_option_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumOptions)
}
EnumOptions::EnumOptions(const EnumOptions& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      uninterpreted_option_(from.uninterpreted_option_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  ::memcpy(&allow_alias_, &from.allow_alias_,
    static_cast<size_t>(reinterpret_cast<char*>(&deprecated_) -
    reinterpret_cast<char*>(&allow_alias_)) + sizeof(deprecated_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumOptions)
}

void EnumOptions::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&allow_alias_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&deprecated_) -
    reinterpret_cast<char*>(&allow_alias_)) + sizeof(deprecated_));
}

EnumOptions::~EnumOptions() {
  // @@protoc_insertion_point(destructor:google.protobuf.EnumOptions)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void EnumOptions::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void EnumOptions::ArenaDtor(void* object) {
  EnumOptions* _this = reinterpret_cast< EnumOptions* >(object);
  (void)_this;
}
void EnumOptions::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void EnumOptions::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void EnumOptions::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.EnumOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _extensions_.Clear();
  uninterpreted_option_.Clear();
  ::memset(&allow_alias_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&deprecated_) -
      reinterpret_cast<char*>(&allow_alias_)) + sizeof(deprecated_));
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* EnumOptions::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool allow_alias = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          _Internal::set_has_allow_alias(&has_bits);
          allow_alias_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool deprecated = 3 [default = false];
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 24)) {
          _Internal::set_has_deprecated(&has_bits);
          deprecated_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      case 999:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<7994>(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;
    }
    if ((8000u <= tag)) {
      ptr = _extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
      CHK_(ptr != nullptr);
      continue;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* EnumOptions::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool allow_alias = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_allow_alias(), target);
  }

  // optional bool deprecated = 3 [default = false];
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_deprecated(), target);
  }

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_uninterpreted_option_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(999, this->_internal_uninterpreted_option(i), target, stream);
  }

  // Extension range [1000, 536870912)
  target = _extensions_._InternalSerialize(
  internal_default_instance(), 1000, 536870912, target, stream);

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumOptions)
  return target;
}

size_t EnumOptions::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumOptions)
  size_t total_size = 0;

  total_size += _extensions_.ByteSize();

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  total_size += 2UL * this->_internal_uninterpreted_option_size();
  for (const auto& msg : this->uninterpreted_option_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional bool allow_alias = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 + 1;
    }

    // optional bool deprecated = 3 [default = false];
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 1;
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData EnumOptions::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    EnumOptions::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*EnumOptions::GetClassData() const { return &_class_data_; }

void EnumOptions::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<EnumOptions *>(to)->MergeFrom(
      static_cast<const EnumOptions &>(from));
}


void EnumOptions::MergeFrom(const EnumOptions& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumOptions)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      allow_alias_ = from.allow_alias_;
    }
    if (cached_has_bits & 0x00000002u) {
      deprecated_ = from.deprecated_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _extensions_.MergeFrom(from._extensions_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool EnumOptions::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if (!::herogoogle::protobuf::internal::AllAreInitialized(uninterpreted_option_)) return false;
  return true;
}

void EnumOptions::InternalSwap(EnumOptions* other) {
  using std::swap;
  _extensions_.InternalSwap(&other->_extensions_);
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(EnumOptions, deprecated_)
      + sizeof(EnumOptions::deprecated_)
      - PROTOBUF_FIELD_OFFSET(EnumOptions, allow_alias_)>(
          reinterpret_cast<char*>(&allow_alias_),
          reinterpret_cast<char*>(&other->allow_alias_));
}

::herogoogle::protobuf::Metadata EnumOptions::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[17]);
}

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

class EnumValueOptions::_Internal {
 public:
  using HasBits = decltype(std::declval<EnumValueOptions>()._has_bits_);
  static void set_has_deprecated(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

EnumValueOptions::EnumValueOptions(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  _extensions_(arena),
  uninterpreted_option_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumValueOptions)
}
EnumValueOptions::EnumValueOptions(const EnumValueOptions& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      uninterpreted_option_(from.uninterpreted_option_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  deprecated_ = from.deprecated_;
  // @@protoc_insertion_point(copy_constructor:google.protobuf.EnumValueOptions)
}

void EnumValueOptions::SharedCtor() {
deprecated_ = false;
}

EnumValueOptions::~EnumValueOptions() {
  // @@protoc_insertion_point(destructor:google.protobuf.EnumValueOptions)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void EnumValueOptions::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void EnumValueOptions::ArenaDtor(void* object) {
  EnumValueOptions* _this = reinterpret_cast< EnumValueOptions* >(object);
  (void)_this;
}
void EnumValueOptions::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void EnumValueOptions::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void EnumValueOptions::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.EnumValueOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _extensions_.Clear();
  uninterpreted_option_.Clear();
  deprecated_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* EnumValueOptions::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool deprecated = 1 [default = false];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 8)) {
          _Internal::set_has_deprecated(&has_bits);
          deprecated_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      case 999:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<7994>(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;
    }
    if ((8000u <= tag)) {
      ptr = _extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
      CHK_(ptr != nullptr);
      continue;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* EnumValueOptions::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.EnumValueOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool deprecated = 1 [default = false];
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_deprecated(), target);
  }

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_uninterpreted_option_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(999, this->_internal_uninterpreted_option(i), target, stream);
  }

  // Extension range [1000, 536870912)
  target = _extensions_._InternalSerialize(
  internal_default_instance(), 1000, 536870912, target, stream);

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumValueOptions)
  return target;
}

size_t EnumValueOptions::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.EnumValueOptions)
  size_t total_size = 0;

  total_size += _extensions_.ByteSize();

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  total_size += 2UL * this->_internal_uninterpreted_option_size();
  for (const auto& msg : this->uninterpreted_option_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // optional bool deprecated = 1 [default = false];
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData EnumValueOptions::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    EnumValueOptions::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*EnumValueOptions::GetClassData() const { return &_class_data_; }

void EnumValueOptions::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<EnumValueOptions *>(to)->MergeFrom(
      static_cast<const EnumValueOptions &>(from));
}


void EnumValueOptions::MergeFrom(const EnumValueOptions& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.EnumValueOptions)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  if (from._internal_has_deprecated()) {
    _internal_set_deprecated(from._internal_deprecated());
  }
  _extensions_.MergeFrom(from._extensions_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool EnumValueOptions::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if (!::herogoogle::protobuf::internal::AllAreInitialized(uninterpreted_option_)) return false;
  return true;
}

void EnumValueOptions::InternalSwap(EnumValueOptions* other) {
  using std::swap;
  _extensions_.InternalSwap(&other->_extensions_);
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
  swap(deprecated_, other->deprecated_);
}

::herogoogle::protobuf::Metadata EnumValueOptions::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[18]);
}

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

class ServiceOptions::_Internal {
 public:
  using HasBits = decltype(std::declval<ServiceOptions>()._has_bits_);
  static void set_has_deprecated(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

ServiceOptions::ServiceOptions(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  _extensions_(arena),
  uninterpreted_option_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.ServiceOptions)
}
ServiceOptions::ServiceOptions(const ServiceOptions& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      uninterpreted_option_(from.uninterpreted_option_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  deprecated_ = from.deprecated_;
  // @@protoc_insertion_point(copy_constructor:google.protobuf.ServiceOptions)
}

void ServiceOptions::SharedCtor() {
deprecated_ = false;
}

ServiceOptions::~ServiceOptions() {
  // @@protoc_insertion_point(destructor:google.protobuf.ServiceOptions)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void ServiceOptions::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void ServiceOptions::ArenaDtor(void* object) {
  ServiceOptions* _this = reinterpret_cast< ServiceOptions* >(object);
  (void)_this;
}
void ServiceOptions::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void ServiceOptions::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void ServiceOptions::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.ServiceOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _extensions_.Clear();
  uninterpreted_option_.Clear();
  deprecated_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* ServiceOptions::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool deprecated = 33 [default = false];
      case 33:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 8)) {
          _Internal::set_has_deprecated(&has_bits);
          deprecated_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      case 999:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<7994>(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;
    }
    if ((8000u <= tag)) {
      ptr = _extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
      CHK_(ptr != nullptr);
      continue;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* ServiceOptions::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.ServiceOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool deprecated = 33 [default = false];
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(33, this->_internal_deprecated(), target);
  }

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_uninterpreted_option_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(999, this->_internal_uninterpreted_option(i), target, stream);
  }

  // Extension range [1000, 536870912)
  target = _extensions_._InternalSerialize(
  internal_default_instance(), 1000, 536870912, target, stream);

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.ServiceOptions)
  return target;
}

size_t ServiceOptions::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.ServiceOptions)
  size_t total_size = 0;

  total_size += _extensions_.ByteSize();

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  total_size += 2UL * this->_internal_uninterpreted_option_size();
  for (const auto& msg : this->uninterpreted_option_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  // optional bool deprecated = 33 [default = false];
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 2 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData ServiceOptions::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    ServiceOptions::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*ServiceOptions::GetClassData() const { return &_class_data_; }

void ServiceOptions::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<ServiceOptions *>(to)->MergeFrom(
      static_cast<const ServiceOptions &>(from));
}


void ServiceOptions::MergeFrom(const ServiceOptions& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.ServiceOptions)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  if (from._internal_has_deprecated()) {
    _internal_set_deprecated(from._internal_deprecated());
  }
  _extensions_.MergeFrom(from._extensions_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool ServiceOptions::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if (!::herogoogle::protobuf::internal::AllAreInitialized(uninterpreted_option_)) return false;
  return true;
}

void ServiceOptions::InternalSwap(ServiceOptions* other) {
  using std::swap;
  _extensions_.InternalSwap(&other->_extensions_);
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
  swap(deprecated_, other->deprecated_);
}

::herogoogle::protobuf::Metadata ServiceOptions::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[19]);
}

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

class MethodOptions::_Internal {
 public:
  using HasBits = decltype(std::declval<MethodOptions>()._has_bits_);
  static void set_has_deprecated(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_idempotency_level(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

MethodOptions::MethodOptions(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  _extensions_(arena),
  uninterpreted_option_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.MethodOptions)
}
MethodOptions::MethodOptions(const MethodOptions& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      uninterpreted_option_(from.uninterpreted_option_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  _extensions_.MergeFrom(from._extensions_);
  ::memcpy(&deprecated_, &from.deprecated_,
    static_cast<size_t>(reinterpret_cast<char*>(&idempotency_level_) -
    reinterpret_cast<char*>(&deprecated_)) + sizeof(idempotency_level_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.MethodOptions)
}

void MethodOptions::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&deprecated_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&idempotency_level_) -
    reinterpret_cast<char*>(&deprecated_)) + sizeof(idempotency_level_));
}

MethodOptions::~MethodOptions() {
  // @@protoc_insertion_point(destructor:google.protobuf.MethodOptions)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void MethodOptions::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void MethodOptions::ArenaDtor(void* object) {
  MethodOptions* _this = reinterpret_cast< MethodOptions* >(object);
  (void)_this;
}
void MethodOptions::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void MethodOptions::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void MethodOptions::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.MethodOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _extensions_.Clear();
  uninterpreted_option_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    ::memset(&deprecated_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&idempotency_level_) -
        reinterpret_cast<char*>(&deprecated_)) + sizeof(idempotency_level_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* MethodOptions::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool deprecated = 33 [default = false];
      case 33:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 8)) {
          _Internal::set_has_deprecated(&has_bits);
          deprecated_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
      case 34:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          ::herogoogle::protobuf::uint64 val = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::herogoogle::protobuf::MethodOptions_IdempotencyLevel_IsValid(val))) {
            _internal_set_idempotency_level(static_cast<::herogoogle::protobuf::MethodOptions_IdempotencyLevel>(val));
          } else {
            ::herogoogle::protobuf::internal::WriteVarint(34, val, mutable_unknown_fields());
          }
        } else
          goto handle_unusual;
        continue;
      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
      case 999:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<7994>(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;
    }
    if ((8000u <= tag)) {
      ptr = _extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
      CHK_(ptr != nullptr);
      continue;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* MethodOptions::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.MethodOptions)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool deprecated = 33 [default = false];
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(33, this->_internal_deprecated(), target);
  }

  // optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteEnumToArray(
      34, this->_internal_idempotency_level(), target);
  }

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_uninterpreted_option_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(999, this->_internal_uninterpreted_option(i), target, stream);
  }

  // Extension range [1000, 536870912)
  target = _extensions_._InternalSerialize(
  internal_default_instance(), 1000, 536870912, target, stream);

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.MethodOptions)
  return target;
}

size_t MethodOptions::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.MethodOptions)
  size_t total_size = 0;

  total_size += _extensions_.ByteSize();

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
  total_size += 2UL * this->_internal_uninterpreted_option_size();
  for (const auto& msg : this->uninterpreted_option_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional bool deprecated = 33 [default = false];
    if (cached_has_bits & 0x00000001u) {
      total_size += 2 + 1;
    }

    // optional .google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];
    if (cached_has_bits & 0x00000002u) {
      total_size += 2 +
        ::herogoogle::protobuf::internal::WireFormatLite::EnumSize(this->_internal_idempotency_level());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData MethodOptions::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    MethodOptions::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*MethodOptions::GetClassData() const { return &_class_data_; }

void MethodOptions::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<MethodOptions *>(to)->MergeFrom(
      static_cast<const MethodOptions &>(from));
}


void MethodOptions::MergeFrom(const MethodOptions& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.MethodOptions)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  uninterpreted_option_.MergeFrom(from.uninterpreted_option_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      deprecated_ = from.deprecated_;
    }
    if (cached_has_bits & 0x00000002u) {
      idempotency_level_ = from.idempotency_level_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _extensions_.MergeFrom(from._extensions_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool MethodOptions::IsInitialized() const {
  if (!_extensions_.IsInitialized()) {
    return false;
  }

  if (!::herogoogle::protobuf::internal::AllAreInitialized(uninterpreted_option_)) return false;
  return true;
}

void MethodOptions::InternalSwap(MethodOptions* other) {
  using std::swap;
  _extensions_.InternalSwap(&other->_extensions_);
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  uninterpreted_option_.InternalSwap(&other->uninterpreted_option_);
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MethodOptions, idempotency_level_)
      + sizeof(MethodOptions::idempotency_level_)
      - PROTOBUF_FIELD_OFFSET(MethodOptions, deprecated_)>(
          reinterpret_cast<char*>(&deprecated_),
          reinterpret_cast<char*>(&other->deprecated_));
}

::herogoogle::protobuf::Metadata MethodOptions::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[20]);
}

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

class UninterpretedOption_NamePart::_Internal {
 public:
  using HasBits = decltype(std::declval<UninterpretedOption_NamePart>()._has_bits_);
  static void set_has_name_part(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_is_extension(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x00000003) ^ 0x00000003) != 0;
  }
};

UninterpretedOption_NamePart::UninterpretedOption_NamePart(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.UninterpretedOption.NamePart)
}
UninterpretedOption_NamePart::UninterpretedOption_NamePart(const UninterpretedOption_NamePart& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  name_part_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_name_part()) {
    name_part_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name_part(), 
      GetArenaForAllocation());
  }
  is_extension_ = from.is_extension_;
  // @@protoc_insertion_point(copy_constructor:google.protobuf.UninterpretedOption.NamePart)
}

void UninterpretedOption_NamePart::SharedCtor() {
name_part_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
is_extension_ = false;
}

UninterpretedOption_NamePart::~UninterpretedOption_NamePart() {
  // @@protoc_insertion_point(destructor:google.protobuf.UninterpretedOption.NamePart)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void UninterpretedOption_NamePart::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_part_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

void UninterpretedOption_NamePart::ArenaDtor(void* object) {
  UninterpretedOption_NamePart* _this = reinterpret_cast< UninterpretedOption_NamePart* >(object);
  (void)_this;
}
void UninterpretedOption_NamePart::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void UninterpretedOption_NamePart::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void UninterpretedOption_NamePart::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.UninterpretedOption.NamePart)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    name_part_.ClearNonDefaultToEmpty();
  }
  is_extension_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* UninterpretedOption_NamePart::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // required string name_part = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_name_part();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.UninterpretedOption.NamePart.name_part");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // required bool is_extension = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          _Internal::set_has_is_extension(&has_bits);
          is_extension_ = ::herogoogle::protobuf::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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* UninterpretedOption_NamePart::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.UninterpretedOption.NamePart)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // required string name_part = 1;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_name_part().data(), static_cast<int>(this->_internal_name_part().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.UninterpretedOption.NamePart.name_part");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name_part(), target);
  }

  // required bool is_extension = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_is_extension(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.UninterpretedOption.NamePart)
  return target;
}

size_t UninterpretedOption_NamePart::RequiredFieldsByteSizeFallback() const {
// @@protoc_insertion_point(required_fields_byte_size_fallback_start:google.protobuf.UninterpretedOption.NamePart)
  size_t total_size = 0;

  if (_internal_has_name_part()) {
    // required string name_part = 1;
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_name_part());
  }

  if (_internal_has_is_extension()) {
    // required bool is_extension = 2;
    total_size += 1 + 1;
  }

  return total_size;
}
size_t UninterpretedOption_NamePart::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.UninterpretedOption.NamePart)
  size_t total_size = 0;

  if (((_has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
    // required string name_part = 1;
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_name_part());

    // required bool is_extension = 2;
    total_size += 1 + 1;

  } else {
    total_size += RequiredFieldsByteSizeFallback();
  }
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData UninterpretedOption_NamePart::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    UninterpretedOption_NamePart::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*UninterpretedOption_NamePart::GetClassData() const { return &_class_data_; }

void UninterpretedOption_NamePart::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<UninterpretedOption_NamePart *>(to)->MergeFrom(
      static_cast<const UninterpretedOption_NamePart &>(from));
}


void UninterpretedOption_NamePart::MergeFrom(const UninterpretedOption_NamePart& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.UninterpretedOption.NamePart)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_name_part(from._internal_name_part());
    }
    if (cached_has_bits & 0x00000002u) {
      is_extension_ = from.is_extension_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void UninterpretedOption_NamePart::CopyFrom(const UninterpretedOption_NamePart& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.UninterpretedOption.NamePart)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool UninterpretedOption_NamePart::IsInitialized() const {
  if (_Internal::MissingRequiredFields(_has_bits_)) return false;
  return true;
}

void UninterpretedOption_NamePart::InternalSwap(UninterpretedOption_NamePart* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &name_part_, lhs_arena,
      &other->name_part_, rhs_arena
  );
  swap(is_extension_, other->is_extension_);
}

::herogoogle::protobuf::Metadata UninterpretedOption_NamePart::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[21]);
}

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

class UninterpretedOption::_Internal {
 public:
  using HasBits = decltype(std::declval<UninterpretedOption>()._has_bits_);
  static void set_has_identifier_value(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_positive_int_value(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_negative_int_value(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_double_value(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_string_value(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_aggregate_value(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

UninterpretedOption::UninterpretedOption(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  name_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.UninterpretedOption)
}
UninterpretedOption::UninterpretedOption(const UninterpretedOption& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      name_(from.name_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  identifier_value_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_identifier_value()) {
    identifier_value_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_identifier_value(), 
      GetArenaForAllocation());
  }
  string_value_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_string_value()) {
    string_value_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_string_value(), 
      GetArenaForAllocation());
  }
  aggregate_value_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_aggregate_value()) {
    aggregate_value_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_aggregate_value(), 
      GetArenaForAllocation());
  }
  ::memcpy(&positive_int_value_, &from.positive_int_value_,
    static_cast<size_t>(reinterpret_cast<char*>(&double_value_) -
    reinterpret_cast<char*>(&positive_int_value_)) + sizeof(double_value_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.UninterpretedOption)
}

void UninterpretedOption::SharedCtor() {
identifier_value_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
string_value_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
aggregate_value_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&positive_int_value_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&double_value_) -
    reinterpret_cast<char*>(&positive_int_value_)) + sizeof(double_value_));
}

UninterpretedOption::~UninterpretedOption() {
  // @@protoc_insertion_point(destructor:google.protobuf.UninterpretedOption)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void UninterpretedOption::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  identifier_value_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  string_value_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  aggregate_value_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

void UninterpretedOption::ArenaDtor(void* object) {
  UninterpretedOption* _this = reinterpret_cast< UninterpretedOption* >(object);
  (void)_this;
}
void UninterpretedOption::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void UninterpretedOption::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void UninterpretedOption::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.UninterpretedOption)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  name_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      identifier_value_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      string_value_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      aggregate_value_.ClearNonDefaultToEmpty();
    }
  }
  if (cached_has_bits & 0x00000038u) {
    ::memset(&positive_int_value_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&double_value_) -
        reinterpret_cast<char*>(&positive_int_value_)) + sizeof(double_value_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* UninterpretedOption::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_name(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional string identifier_value = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          auto str = _internal_mutable_identifier_value();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.UninterpretedOption.identifier_value");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 positive_int_value = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 32)) {
          _Internal::set_has_positive_int_value(&has_bits);
          positive_int_value_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int64 negative_int_value = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 40)) {
          _Internal::set_has_negative_int_value(&has_bits);
          negative_int_value_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional double double_value = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 49)) {
          _Internal::set_has_double_value(&has_bits);
          double_value_ = ::herogoogle::protobuf::internal::UnalignedLoad<double>(ptr);
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      // optional bytes string_value = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          auto str = _internal_mutable_string_value();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string aggregate_value = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 66)) {
          auto str = _internal_mutable_aggregate_value();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.UninterpretedOption.aggregate_value");
          #endif  // !NDEBUG
          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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* UninterpretedOption::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.UninterpretedOption)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_name_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_name(i), target, stream);
  }

  cached_has_bits = _has_bits_[0];
  // optional string identifier_value = 3;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_identifier_value().data(), static_cast<int>(this->_internal_identifier_value().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.UninterpretedOption.identifier_value");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_identifier_value(), target);
  }

  // optional uint64 positive_int_value = 4;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->_internal_positive_int_value(), target);
  }

  // optional int64 negative_int_value = 5;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt64ToArray(5, this->_internal_negative_int_value(), target);
  }

  // optional double double_value = 6;
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteDoubleToArray(6, this->_internal_double_value(), target);
  }

  // optional bytes string_value = 7;
  if (cached_has_bits & 0x00000002u) {
    target = stream->WriteBytesMaybeAliased(
        7, this->_internal_string_value(), target);
  }

  // optional string aggregate_value = 8;
  if (cached_has_bits & 0x00000004u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_aggregate_value().data(), static_cast<int>(this->_internal_aggregate_value().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.UninterpretedOption.aggregate_value");
    target = stream->WriteStringMaybeAliased(
        8, this->_internal_aggregate_value(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.UninterpretedOption)
  return target;
}

size_t UninterpretedOption::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.UninterpretedOption)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
  total_size += 1UL * this->_internal_name_size();
  for (const auto& msg : this->name_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    // optional string identifier_value = 3;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_identifier_value());
    }

    // optional bytes string_value = 7;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::BytesSize(
          this->_internal_string_value());
    }

    // optional string aggregate_value = 8;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_aggregate_value());
    }

    // optional uint64 positive_int_value = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::UInt64SizePlusOne(this->_internal_positive_int_value());
    }

    // optional int64 negative_int_value = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int64SizePlusOne(this->_internal_negative_int_value());
    }

    // optional double double_value = 6;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 + 8;
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData UninterpretedOption::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    UninterpretedOption::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*UninterpretedOption::GetClassData() const { return &_class_data_; }

void UninterpretedOption::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<UninterpretedOption *>(to)->MergeFrom(
      static_cast<const UninterpretedOption &>(from));
}


void UninterpretedOption::MergeFrom(const UninterpretedOption& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.UninterpretedOption)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  name_.MergeFrom(from.name_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000003fu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_identifier_value(from._internal_identifier_value());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_set_string_value(from._internal_string_value());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_set_aggregate_value(from._internal_aggregate_value());
    }
    if (cached_has_bits & 0x00000008u) {
      positive_int_value_ = from.positive_int_value_;
    }
    if (cached_has_bits & 0x00000010u) {
      negative_int_value_ = from.negative_int_value_;
    }
    if (cached_has_bits & 0x00000020u) {
      double_value_ = from.double_value_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

bool UninterpretedOption::IsInitialized() const {
  if (!::herogoogle::protobuf::internal::AllAreInitialized(name_)) return false;
  return true;
}

void UninterpretedOption::InternalSwap(UninterpretedOption* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  name_.InternalSwap(&other->name_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &identifier_value_, lhs_arena,
      &other->identifier_value_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &string_value_, lhs_arena,
      &other->string_value_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &aggregate_value_, lhs_arena,
      &other->aggregate_value_, rhs_arena
  );
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(UninterpretedOption, double_value_)
      + sizeof(UninterpretedOption::double_value_)
      - PROTOBUF_FIELD_OFFSET(UninterpretedOption, positive_int_value_)>(
          reinterpret_cast<char*>(&positive_int_value_),
          reinterpret_cast<char*>(&other->positive_int_value_));
}

::herogoogle::protobuf::Metadata UninterpretedOption::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[22]);
}

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

class SourceCodeInfo_Location::_Internal {
 public:
  using HasBits = decltype(std::declval<SourceCodeInfo_Location>()._has_bits_);
  static void set_has_leading_comments(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_trailing_comments(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

SourceCodeInfo_Location::SourceCodeInfo_Location(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  path_(arena),
  span_(arena),
  leading_detached_comments_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.SourceCodeInfo.Location)
}
SourceCodeInfo_Location::SourceCodeInfo_Location(const SourceCodeInfo_Location& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      path_(from.path_),
      span_(from.span_),
      leading_detached_comments_(from.leading_detached_comments_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  leading_comments_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_leading_comments()) {
    leading_comments_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_leading_comments(), 
      GetArenaForAllocation());
  }
  trailing_comments_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_trailing_comments()) {
    trailing_comments_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_trailing_comments(), 
      GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.SourceCodeInfo.Location)
}

void SourceCodeInfo_Location::SharedCtor() {
leading_comments_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
trailing_comments_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

SourceCodeInfo_Location::~SourceCodeInfo_Location() {
  // @@protoc_insertion_point(destructor:google.protobuf.SourceCodeInfo.Location)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void SourceCodeInfo_Location::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  leading_comments_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  trailing_comments_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

void SourceCodeInfo_Location::ArenaDtor(void* object) {
  SourceCodeInfo_Location* _this = reinterpret_cast< SourceCodeInfo_Location* >(object);
  (void)_this;
}
void SourceCodeInfo_Location::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void SourceCodeInfo_Location::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void SourceCodeInfo_Location::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.SourceCodeInfo.Location)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  path_.Clear();
  span_.Clear();
  leading_detached_comments_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      leading_comments_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      trailing_comments_.ClearNonDefaultToEmpty();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* SourceCodeInfo_Location::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated int32 path = 1 [packed = true];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          ptr = ::herogoogle::protobuf::internal::PackedInt32Parser(_internal_mutable_path(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::herogoogle::protobuf::uint8>(tag) == 8) {
          _internal_add_path(::herogoogle::protobuf::internal::ReadVarint64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 span = 2 [packed = true];
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          ptr = ::herogoogle::protobuf::internal::PackedInt32Parser(_internal_mutable_span(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::herogoogle::protobuf::uint8>(tag) == 16) {
          _internal_add_span(::herogoogle::protobuf::internal::ReadVarint64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string leading_comments = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          auto str = _internal_mutable_leading_comments();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.SourceCodeInfo.Location.leading_comments");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string trailing_comments = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 34)) {
          auto str = _internal_mutable_trailing_comments();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.SourceCodeInfo.Location.trailing_comments");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string leading_detached_comments = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_leading_detached_comments();
            ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
            #ifndef NDEBUG
            ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.SourceCodeInfo.Location.leading_detached_comments");
            #endif  // !NDEBUG
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<50>(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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* SourceCodeInfo_Location::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.SourceCodeInfo.Location)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated int32 path = 1 [packed = true];
  {
    int byte_size = _path_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          1, _internal_path(), byte_size, target);
    }
  }

  // repeated int32 span = 2 [packed = true];
  {
    int byte_size = _span_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          2, _internal_span(), byte_size, target);
    }
  }

  cached_has_bits = _has_bits_[0];
  // optional string leading_comments = 3;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_leading_comments().data(), static_cast<int>(this->_internal_leading_comments().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.SourceCodeInfo.Location.leading_comments");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_leading_comments(), target);
  }

  // optional string trailing_comments = 4;
  if (cached_has_bits & 0x00000002u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_trailing_comments().data(), static_cast<int>(this->_internal_trailing_comments().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.SourceCodeInfo.Location.trailing_comments");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_trailing_comments(), target);
  }

  // repeated string leading_detached_comments = 6;
  for (int i = 0, n = this->_internal_leading_detached_comments_size(); i < n; i++) {
    const auto& s = this->_internal_leading_detached_comments(i);
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.SourceCodeInfo.Location.leading_detached_comments");
    target = stream->WriteString(6, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.SourceCodeInfo.Location)
  return target;
}

size_t SourceCodeInfo_Location::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.SourceCodeInfo.Location)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated int32 path = 1 [packed = true];
  {
    size_t data_size = ::herogoogle::protobuf::internal::WireFormatLite::
      Int32Size(this->path_);
    if (data_size > 0) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::Int32Size(
            static_cast<::herogoogle::protobuf::int32>(data_size));
    }
    int cached_size = ::herogoogle::protobuf::internal::ToCachedSize(data_size);
    _path_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated int32 span = 2 [packed = true];
  {
    size_t data_size = ::herogoogle::protobuf::internal::WireFormatLite::
      Int32Size(this->span_);
    if (data_size > 0) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::Int32Size(
            static_cast<::herogoogle::protobuf::int32>(data_size));
    }
    int cached_size = ::herogoogle::protobuf::internal::ToCachedSize(data_size);
    _span_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated string leading_detached_comments = 6;
  total_size += 1 *
      ::herogoogle::protobuf::internal::FromIntSize(leading_detached_comments_.size());
  for (int i = 0, n = leading_detached_comments_.size(); i < n; i++) {
    total_size += ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
      leading_detached_comments_.Get(i));
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string leading_comments = 3;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_leading_comments());
    }

    // optional string trailing_comments = 4;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_trailing_comments());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData SourceCodeInfo_Location::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    SourceCodeInfo_Location::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*SourceCodeInfo_Location::GetClassData() const { return &_class_data_; }

void SourceCodeInfo_Location::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<SourceCodeInfo_Location *>(to)->MergeFrom(
      static_cast<const SourceCodeInfo_Location &>(from));
}


void SourceCodeInfo_Location::MergeFrom(const SourceCodeInfo_Location& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.SourceCodeInfo.Location)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  path_.MergeFrom(from.path_);
  span_.MergeFrom(from.span_);
  leading_detached_comments_.MergeFrom(from.leading_detached_comments_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_leading_comments(from._internal_leading_comments());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_set_trailing_comments(from._internal_trailing_comments());
    }
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void SourceCodeInfo_Location::CopyFrom(const SourceCodeInfo_Location& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.SourceCodeInfo.Location)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SourceCodeInfo_Location::InternalSwap(SourceCodeInfo_Location* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  path_.InternalSwap(&other->path_);
  span_.InternalSwap(&other->span_);
  leading_detached_comments_.InternalSwap(&other->leading_detached_comments_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &leading_comments_, lhs_arena,
      &other->leading_comments_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &trailing_comments_, lhs_arena,
      &other->trailing_comments_, rhs_arena
  );
}

::herogoogle::protobuf::Metadata SourceCodeInfo_Location::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[23]);
}

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

class SourceCodeInfo::_Internal {
 public:
};

SourceCodeInfo::SourceCodeInfo(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  location_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.SourceCodeInfo)
}
SourceCodeInfo::SourceCodeInfo(const SourceCodeInfo& from)
  : ::herogoogle::protobuf::Message(),
      location_(from.location_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.SourceCodeInfo)
}

void SourceCodeInfo::SharedCtor() {
}

SourceCodeInfo::~SourceCodeInfo() {
  // @@protoc_insertion_point(destructor:google.protobuf.SourceCodeInfo)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void SourceCodeInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void SourceCodeInfo::ArenaDtor(void* object) {
  SourceCodeInfo* _this = reinterpret_cast< SourceCodeInfo* >(object);
  (void)_this;
}
void SourceCodeInfo::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void SourceCodeInfo::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void SourceCodeInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.SourceCodeInfo)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  location_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* SourceCodeInfo::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_location(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* SourceCodeInfo::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.SourceCodeInfo)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_location_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_location(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.SourceCodeInfo)
  return target;
}

size_t SourceCodeInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.SourceCodeInfo)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.SourceCodeInfo.Location location = 1;
  total_size += 1UL * this->_internal_location_size();
  for (const auto& msg : this->location_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData SourceCodeInfo::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    SourceCodeInfo::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*SourceCodeInfo::GetClassData() const { return &_class_data_; }

void SourceCodeInfo::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<SourceCodeInfo *>(to)->MergeFrom(
      static_cast<const SourceCodeInfo &>(from));
}


void SourceCodeInfo::MergeFrom(const SourceCodeInfo& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.SourceCodeInfo)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  location_.MergeFrom(from.location_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

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

::herogoogle::protobuf::Metadata SourceCodeInfo::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[24]);
}

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

class GeneratedCodeInfo_Annotation::_Internal {
 public:
  using HasBits = decltype(std::declval<GeneratedCodeInfo_Annotation>()._has_bits_);
  static void set_has_source_file(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_begin(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_end(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

GeneratedCodeInfo_Annotation::GeneratedCodeInfo_Annotation(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  path_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.GeneratedCodeInfo.Annotation)
}
GeneratedCodeInfo_Annotation::GeneratedCodeInfo_Annotation(const GeneratedCodeInfo_Annotation& from)
  : ::herogoogle::protobuf::Message(),
      _has_bits_(from._has_bits_),
      path_(from.path_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  source_file_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from._internal_has_source_file()) {
    source_file_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_source_file(), 
      GetArenaForAllocation());
  }
  ::memcpy(&begin_, &from.begin_,
    static_cast<size_t>(reinterpret_cast<char*>(&end_) -
    reinterpret_cast<char*>(&begin_)) + sizeof(end_));
  // @@protoc_insertion_point(copy_constructor:google.protobuf.GeneratedCodeInfo.Annotation)
}

void GeneratedCodeInfo_Annotation::SharedCtor() {
source_file_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&begin_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&end_) -
    reinterpret_cast<char*>(&begin_)) + sizeof(end_));
}

GeneratedCodeInfo_Annotation::~GeneratedCodeInfo_Annotation() {
  // @@protoc_insertion_point(destructor:google.protobuf.GeneratedCodeInfo.Annotation)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void GeneratedCodeInfo_Annotation::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  source_file_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

void GeneratedCodeInfo_Annotation::ArenaDtor(void* object) {
  GeneratedCodeInfo_Annotation* _this = reinterpret_cast< GeneratedCodeInfo_Annotation* >(object);
  (void)_this;
}
void GeneratedCodeInfo_Annotation::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void GeneratedCodeInfo_Annotation::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void GeneratedCodeInfo_Annotation::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.GeneratedCodeInfo.Annotation)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  path_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    source_file_.ClearNonDefaultToEmpty();
  }
  if (cached_has_bits & 0x00000006u) {
    ::memset(&begin_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&end_) -
        reinterpret_cast<char*>(&begin_)) + sizeof(end_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* GeneratedCodeInfo_Annotation::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated int32 path = 1 [packed = true];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          ptr = ::herogoogle::protobuf::internal::PackedInt32Parser(_internal_mutable_path(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<::herogoogle::protobuf::uint8>(tag) == 8) {
          _internal_add_path(::herogoogle::protobuf::internal::ReadVarint64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string source_file = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          auto str = _internal_mutable_source_file();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          #ifndef NDEBUG
          ::herogoogle::protobuf::internal::VerifyUTF8(str, "google.protobuf.GeneratedCodeInfo.Annotation.source_file");
          #endif  // !NDEBUG
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 begin = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 24)) {
          _Internal::set_has_begin(&has_bits);
          begin_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 end = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 32)) {
          _Internal::set_has_end(&has_bits);
          end_ = ::herogoogle::protobuf::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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* GeneratedCodeInfo_Annotation::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.GeneratedCodeInfo.Annotation)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated int32 path = 1 [packed = true];
  {
    int byte_size = _path_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          1, _internal_path(), byte_size, target);
    }
  }

  cached_has_bits = _has_bits_[0];
  // optional string source_file = 2;
  if (cached_has_bits & 0x00000001u) {
    ::herogoogle::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_source_file().data(), static_cast<int>(this->_internal_source_file().length()),
      ::herogoogle::protobuf::internal::WireFormat::SERIALIZE,
      "google.protobuf.GeneratedCodeInfo.Annotation.source_file");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_source_file(), target);
  }

  // optional int32 begin = 3;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_begin(), target);
  }

  // optional int32 end = 4;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_end(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.GeneratedCodeInfo.Annotation)
  return target;
}

size_t GeneratedCodeInfo_Annotation::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.GeneratedCodeInfo.Annotation)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated int32 path = 1 [packed = true];
  {
    size_t data_size = ::herogoogle::protobuf::internal::WireFormatLite::
      Int32Size(this->path_);
    if (data_size > 0) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::Int32Size(
            static_cast<::herogoogle::protobuf::int32>(data_size));
    }
    int cached_size = ::herogoogle::protobuf::internal::ToCachedSize(data_size);
    _path_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional string source_file = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
          this->_internal_source_file());
    }

    // optional int32 begin = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_begin());
    }

    // optional int32 end = 4;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int32SizePlusOne(this->_internal_end());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData GeneratedCodeInfo_Annotation::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    GeneratedCodeInfo_Annotation::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*GeneratedCodeInfo_Annotation::GetClassData() const { return &_class_data_; }

void GeneratedCodeInfo_Annotation::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<GeneratedCodeInfo_Annotation *>(to)->MergeFrom(
      static_cast<const GeneratedCodeInfo_Annotation &>(from));
}


void GeneratedCodeInfo_Annotation::MergeFrom(const GeneratedCodeInfo_Annotation& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.GeneratedCodeInfo.Annotation)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  path_.MergeFrom(from.path_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_set_source_file(from._internal_source_file());
    }
    if (cached_has_bits & 0x00000002u) {
      begin_ = from.begin_;
    }
    if (cached_has_bits & 0x00000004u) {
      end_ = from.end_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void GeneratedCodeInfo_Annotation::CopyFrom(const GeneratedCodeInfo_Annotation& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.GeneratedCodeInfo.Annotation)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void GeneratedCodeInfo_Annotation::InternalSwap(GeneratedCodeInfo_Annotation* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  path_.InternalSwap(&other->path_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &source_file_, lhs_arena,
      &other->source_file_, rhs_arena
  );
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(GeneratedCodeInfo_Annotation, end_)
      + sizeof(GeneratedCodeInfo_Annotation::end_)
      - PROTOBUF_FIELD_OFFSET(GeneratedCodeInfo_Annotation, begin_)>(
          reinterpret_cast<char*>(&begin_),
          reinterpret_cast<char*>(&other->begin_));
}

::herogoogle::protobuf::Metadata GeneratedCodeInfo_Annotation::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[25]);
}

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

class GeneratedCodeInfo::_Internal {
 public:
};

GeneratedCodeInfo::GeneratedCodeInfo(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  annotation_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:google.protobuf.GeneratedCodeInfo)
}
GeneratedCodeInfo::GeneratedCodeInfo(const GeneratedCodeInfo& from)
  : ::herogoogle::protobuf::Message(),
      annotation_(from.annotation_) {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:google.protobuf.GeneratedCodeInfo)
}

void GeneratedCodeInfo::SharedCtor() {
}

GeneratedCodeInfo::~GeneratedCodeInfo() {
  // @@protoc_insertion_point(destructor:google.protobuf.GeneratedCodeInfo)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void GeneratedCodeInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void GeneratedCodeInfo::ArenaDtor(void* object) {
  GeneratedCodeInfo* _this = reinterpret_cast< GeneratedCodeInfo* >(object);
  (void)_this;
}
void GeneratedCodeInfo::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void GeneratedCodeInfo::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void GeneratedCodeInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.GeneratedCodeInfo)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  annotation_.Clear();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* GeneratedCodeInfo::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_annotation(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::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<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* GeneratedCodeInfo::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.GeneratedCodeInfo)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_annotation_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_annotation(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.GeneratedCodeInfo)
  return target;
}

size_t GeneratedCodeInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.GeneratedCodeInfo)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;
  total_size += 1UL * this->_internal_annotation_size();
  for (const auto& msg : this->annotation_) {
    total_size +=
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData GeneratedCodeInfo::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    GeneratedCodeInfo::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*GeneratedCodeInfo::GetClassData() const { return &_class_data_; }

void GeneratedCodeInfo::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<GeneratedCodeInfo *>(to)->MergeFrom(
      static_cast<const GeneratedCodeInfo &>(from));
}


void GeneratedCodeInfo::MergeFrom(const GeneratedCodeInfo& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.GeneratedCodeInfo)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  annotation_.MergeFrom(from.annotation_);
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

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

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

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

::herogoogle::protobuf::Metadata GeneratedCodeInfo::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_getter, &descriptor_table_herogoogle_2fprotobuf_2fdescriptor_2eproto_once,
      file_level_metadata_herogoogle_2fprotobuf_2fdescriptor_2eproto[26]);
}

// @@protoc_insertion_point(namespace_scope)
PROTOBUF_NAMESPACE_CLOSE
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::FileDescriptorSet* Arena::CreateMaybeMessage< ::herogoogle::protobuf::FileDescriptorSet >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::FileDescriptorSet >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::FileDescriptorProto* Arena::CreateMaybeMessage< ::herogoogle::protobuf::FileDescriptorProto >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::FileDescriptorProto >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::DescriptorProto_ExtensionRange* Arena::CreateMaybeMessage< ::herogoogle::protobuf::DescriptorProto_ExtensionRange >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::DescriptorProto_ExtensionRange >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::DescriptorProto_ReservedRange* Arena::CreateMaybeMessage< ::herogoogle::protobuf::DescriptorProto_ReservedRange >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::DescriptorProto_ReservedRange >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::DescriptorProto* Arena::CreateMaybeMessage< ::herogoogle::protobuf::DescriptorProto >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::DescriptorProto >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::ExtensionRangeOptions* Arena::CreateMaybeMessage< ::herogoogle::protobuf::ExtensionRangeOptions >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::ExtensionRangeOptions >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::FieldDescriptorProto* Arena::CreateMaybeMessage< ::herogoogle::protobuf::FieldDescriptorProto >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::FieldDescriptorProto >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::OneofDescriptorProto* Arena::CreateMaybeMessage< ::herogoogle::protobuf::OneofDescriptorProto >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::OneofDescriptorProto >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::EnumDescriptorProto_EnumReservedRange* Arena::CreateMaybeMessage< ::herogoogle::protobuf::EnumDescriptorProto_EnumReservedRange >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::EnumDescriptorProto_EnumReservedRange >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::EnumDescriptorProto* Arena::CreateMaybeMessage< ::herogoogle::protobuf::EnumDescriptorProto >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::EnumDescriptorProto >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::EnumValueDescriptorProto* Arena::CreateMaybeMessage< ::herogoogle::protobuf::EnumValueDescriptorProto >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::EnumValueDescriptorProto >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::ServiceDescriptorProto* Arena::CreateMaybeMessage< ::herogoogle::protobuf::ServiceDescriptorProto >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::ServiceDescriptorProto >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::MethodDescriptorProto* Arena::CreateMaybeMessage< ::herogoogle::protobuf::MethodDescriptorProto >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::MethodDescriptorProto >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::FileOptions* Arena::CreateMaybeMessage< ::herogoogle::protobuf::FileOptions >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::FileOptions >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::MessageOptions* Arena::CreateMaybeMessage< ::herogoogle::protobuf::MessageOptions >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::MessageOptions >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::FieldOptions* Arena::CreateMaybeMessage< ::herogoogle::protobuf::FieldOptions >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::FieldOptions >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::OneofOptions* Arena::CreateMaybeMessage< ::herogoogle::protobuf::OneofOptions >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::OneofOptions >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::EnumOptions* Arena::CreateMaybeMessage< ::herogoogle::protobuf::EnumOptions >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::EnumOptions >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::EnumValueOptions* Arena::CreateMaybeMessage< ::herogoogle::protobuf::EnumValueOptions >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::EnumValueOptions >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::ServiceOptions* Arena::CreateMaybeMessage< ::herogoogle::protobuf::ServiceOptions >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::ServiceOptions >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::MethodOptions* Arena::CreateMaybeMessage< ::herogoogle::protobuf::MethodOptions >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::MethodOptions >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::UninterpretedOption_NamePart* Arena::CreateMaybeMessage< ::herogoogle::protobuf::UninterpretedOption_NamePart >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::UninterpretedOption_NamePart >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::UninterpretedOption* Arena::CreateMaybeMessage< ::herogoogle::protobuf::UninterpretedOption >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::UninterpretedOption >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::SourceCodeInfo_Location* Arena::CreateMaybeMessage< ::herogoogle::protobuf::SourceCodeInfo_Location >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::SourceCodeInfo_Location >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::SourceCodeInfo* Arena::CreateMaybeMessage< ::herogoogle::protobuf::SourceCodeInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::SourceCodeInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::GeneratedCodeInfo_Annotation* Arena::CreateMaybeMessage< ::herogoogle::protobuf::GeneratedCodeInfo_Annotation >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::GeneratedCodeInfo_Annotation >(arena);
}
template<> PROTOBUF_NOINLINE ::herogoogle::protobuf::GeneratedCodeInfo* Arena::CreateMaybeMessage< ::herogoogle::protobuf::GeneratedCodeInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::herogoogle::protobuf::GeneratedCodeInfo >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

