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

#ifndef GOOGLE_PROTOBUF_INCLUDED_onnx_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_onnx_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3019000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3019000 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_onnx_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_onnx_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[21]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const uint32_t offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_onnx_2eproto;
namespace onnx {
class AttributeProto;
struct AttributeProtoDefaultTypeInternal;
extern AttributeProtoDefaultTypeInternal _AttributeProto_default_instance_;
class FunctionProto;
struct FunctionProtoDefaultTypeInternal;
extern FunctionProtoDefaultTypeInternal _FunctionProto_default_instance_;
class GraphProto;
struct GraphProtoDefaultTypeInternal;
extern GraphProtoDefaultTypeInternal _GraphProto_default_instance_;
class ModelProto;
struct ModelProtoDefaultTypeInternal;
extern ModelProtoDefaultTypeInternal _ModelProto_default_instance_;
class NodeProto;
struct NodeProtoDefaultTypeInternal;
extern NodeProtoDefaultTypeInternal _NodeProto_default_instance_;
class OperatorSetIdProto;
struct OperatorSetIdProtoDefaultTypeInternal;
extern OperatorSetIdProtoDefaultTypeInternal _OperatorSetIdProto_default_instance_;
class SparseTensorProto;
struct SparseTensorProtoDefaultTypeInternal;
extern SparseTensorProtoDefaultTypeInternal _SparseTensorProto_default_instance_;
class StringStringEntryProto;
struct StringStringEntryProtoDefaultTypeInternal;
extern StringStringEntryProtoDefaultTypeInternal _StringStringEntryProto_default_instance_;
class TensorAnnotation;
struct TensorAnnotationDefaultTypeInternal;
extern TensorAnnotationDefaultTypeInternal _TensorAnnotation_default_instance_;
class TensorProto;
struct TensorProtoDefaultTypeInternal;
extern TensorProtoDefaultTypeInternal _TensorProto_default_instance_;
class TensorProto_Segment;
struct TensorProto_SegmentDefaultTypeInternal;
extern TensorProto_SegmentDefaultTypeInternal _TensorProto_Segment_default_instance_;
class TensorShapeProto;
struct TensorShapeProtoDefaultTypeInternal;
extern TensorShapeProtoDefaultTypeInternal _TensorShapeProto_default_instance_;
class TensorShapeProto_Dimension;
struct TensorShapeProto_DimensionDefaultTypeInternal;
extern TensorShapeProto_DimensionDefaultTypeInternal _TensorShapeProto_Dimension_default_instance_;
class TrainingInfoProto;
struct TrainingInfoProtoDefaultTypeInternal;
extern TrainingInfoProtoDefaultTypeInternal _TrainingInfoProto_default_instance_;
class TypeProto;
struct TypeProtoDefaultTypeInternal;
extern TypeProtoDefaultTypeInternal _TypeProto_default_instance_;
class TypeProto_Map;
struct TypeProto_MapDefaultTypeInternal;
extern TypeProto_MapDefaultTypeInternal _TypeProto_Map_default_instance_;
class TypeProto_Optional;
struct TypeProto_OptionalDefaultTypeInternal;
extern TypeProto_OptionalDefaultTypeInternal _TypeProto_Optional_default_instance_;
class TypeProto_Sequence;
struct TypeProto_SequenceDefaultTypeInternal;
extern TypeProto_SequenceDefaultTypeInternal _TypeProto_Sequence_default_instance_;
class TypeProto_SparseTensor;
struct TypeProto_SparseTensorDefaultTypeInternal;
extern TypeProto_SparseTensorDefaultTypeInternal _TypeProto_SparseTensor_default_instance_;
class TypeProto_Tensor;
struct TypeProto_TensorDefaultTypeInternal;
extern TypeProto_TensorDefaultTypeInternal _TypeProto_Tensor_default_instance_;
class ValueInfoProto;
struct ValueInfoProtoDefaultTypeInternal;
extern ValueInfoProtoDefaultTypeInternal _ValueInfoProto_default_instance_;
}  // namespace onnx
PROTOBUF_NAMESPACE_OPEN
template<> ::onnx::AttributeProto* Arena::CreateMaybeMessage<::onnx::AttributeProto>(Arena*);
template<> ::onnx::FunctionProto* Arena::CreateMaybeMessage<::onnx::FunctionProto>(Arena*);
template<> ::onnx::GraphProto* Arena::CreateMaybeMessage<::onnx::GraphProto>(Arena*);
template<> ::onnx::ModelProto* Arena::CreateMaybeMessage<::onnx::ModelProto>(Arena*);
template<> ::onnx::NodeProto* Arena::CreateMaybeMessage<::onnx::NodeProto>(Arena*);
template<> ::onnx::OperatorSetIdProto* Arena::CreateMaybeMessage<::onnx::OperatorSetIdProto>(Arena*);
template<> ::onnx::SparseTensorProto* Arena::CreateMaybeMessage<::onnx::SparseTensorProto>(Arena*);
template<> ::onnx::StringStringEntryProto* Arena::CreateMaybeMessage<::onnx::StringStringEntryProto>(Arena*);
template<> ::onnx::TensorAnnotation* Arena::CreateMaybeMessage<::onnx::TensorAnnotation>(Arena*);
template<> ::onnx::TensorProto* Arena::CreateMaybeMessage<::onnx::TensorProto>(Arena*);
template<> ::onnx::TensorProto_Segment* Arena::CreateMaybeMessage<::onnx::TensorProto_Segment>(Arena*);
template<> ::onnx::TensorShapeProto* Arena::CreateMaybeMessage<::onnx::TensorShapeProto>(Arena*);
template<> ::onnx::TensorShapeProto_Dimension* Arena::CreateMaybeMessage<::onnx::TensorShapeProto_Dimension>(Arena*);
template<> ::onnx::TrainingInfoProto* Arena::CreateMaybeMessage<::onnx::TrainingInfoProto>(Arena*);
template<> ::onnx::TypeProto* Arena::CreateMaybeMessage<::onnx::TypeProto>(Arena*);
template<> ::onnx::TypeProto_Map* Arena::CreateMaybeMessage<::onnx::TypeProto_Map>(Arena*);
template<> ::onnx::TypeProto_Optional* Arena::CreateMaybeMessage<::onnx::TypeProto_Optional>(Arena*);
template<> ::onnx::TypeProto_Sequence* Arena::CreateMaybeMessage<::onnx::TypeProto_Sequence>(Arena*);
template<> ::onnx::TypeProto_SparseTensor* Arena::CreateMaybeMessage<::onnx::TypeProto_SparseTensor>(Arena*);
template<> ::onnx::TypeProto_Tensor* Arena::CreateMaybeMessage<::onnx::TypeProto_Tensor>(Arena*);
template<> ::onnx::ValueInfoProto* Arena::CreateMaybeMessage<::onnx::ValueInfoProto>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace onnx {

enum AttributeProto_AttributeType : int {
  AttributeProto_AttributeType_UNDEFINED = 0,
  AttributeProto_AttributeType_FLOAT = 1,
  AttributeProto_AttributeType_INT = 2,
  AttributeProto_AttributeType_STRING = 3,
  AttributeProto_AttributeType_TENSOR = 4,
  AttributeProto_AttributeType_GRAPH = 5,
  AttributeProto_AttributeType_SPARSE_TENSOR = 11,
  AttributeProto_AttributeType_TYPE_PROTO = 13,
  AttributeProto_AttributeType_FLOATS = 6,
  AttributeProto_AttributeType_INTS = 7,
  AttributeProto_AttributeType_STRINGS = 8,
  AttributeProto_AttributeType_TENSORS = 9,
  AttributeProto_AttributeType_GRAPHS = 10,
  AttributeProto_AttributeType_SPARSE_TENSORS = 12,
  AttributeProto_AttributeType_TYPE_PROTOS = 14,
  AttributeProto_AttributeType_AttributeProto_AttributeType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
  AttributeProto_AttributeType_AttributeProto_AttributeType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
};
bool AttributeProto_AttributeType_IsValid(int value);
constexpr AttributeProto_AttributeType AttributeProto_AttributeType_AttributeType_MIN = AttributeProto_AttributeType_UNDEFINED;
constexpr AttributeProto_AttributeType AttributeProto_AttributeType_AttributeType_MAX = AttributeProto_AttributeType_TYPE_PROTOS;
constexpr int AttributeProto_AttributeType_AttributeType_ARRAYSIZE = AttributeProto_AttributeType_AttributeType_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* AttributeProto_AttributeType_descriptor();
template<typename T>
inline const std::string& AttributeProto_AttributeType_Name(T enum_t_value) {
  static_assert(::std::is_same<T, AttributeProto_AttributeType>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function AttributeProto_AttributeType_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    AttributeProto_AttributeType_descriptor(), enum_t_value);
}
inline bool AttributeProto_AttributeType_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, AttributeProto_AttributeType* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<AttributeProto_AttributeType>(
    AttributeProto_AttributeType_descriptor(), name, value);
}
enum TensorProto_DataType : int {
  TensorProto_DataType_UNDEFINED = 0,
  TensorProto_DataType_FLOAT = 1,
  TensorProto_DataType_UINT8 = 2,
  TensorProto_DataType_INT8 = 3,
  TensorProto_DataType_UINT16 = 4,
  TensorProto_DataType_INT16 = 5,
  TensorProto_DataType_INT32 = 6,
  TensorProto_DataType_INT64 = 7,
  TensorProto_DataType_STRING = 8,
  TensorProto_DataType_BOOL = 9,
  TensorProto_DataType_FLOAT16 = 10,
  TensorProto_DataType_DOUBLE = 11,
  TensorProto_DataType_UINT32 = 12,
  TensorProto_DataType_UINT64 = 13,
  TensorProto_DataType_COMPLEX64 = 14,
  TensorProto_DataType_COMPLEX128 = 15,
  TensorProto_DataType_BFLOAT16 = 16,
  TensorProto_DataType_TensorProto_DataType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
  TensorProto_DataType_TensorProto_DataType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
};
bool TensorProto_DataType_IsValid(int value);
constexpr TensorProto_DataType TensorProto_DataType_DataType_MIN = TensorProto_DataType_UNDEFINED;
constexpr TensorProto_DataType TensorProto_DataType_DataType_MAX = TensorProto_DataType_BFLOAT16;
constexpr int TensorProto_DataType_DataType_ARRAYSIZE = TensorProto_DataType_DataType_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TensorProto_DataType_descriptor();
template<typename T>
inline const std::string& TensorProto_DataType_Name(T enum_t_value) {
  static_assert(::std::is_same<T, TensorProto_DataType>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function TensorProto_DataType_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    TensorProto_DataType_descriptor(), enum_t_value);
}
inline bool TensorProto_DataType_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TensorProto_DataType* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<TensorProto_DataType>(
    TensorProto_DataType_descriptor(), name, value);
}
enum TensorProto_DataLocation : int {
  TensorProto_DataLocation_DEFAULT = 0,
  TensorProto_DataLocation_EXTERNAL = 1,
  TensorProto_DataLocation_TensorProto_DataLocation_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
  TensorProto_DataLocation_TensorProto_DataLocation_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
};
bool TensorProto_DataLocation_IsValid(int value);
constexpr TensorProto_DataLocation TensorProto_DataLocation_DataLocation_MIN = TensorProto_DataLocation_DEFAULT;
constexpr TensorProto_DataLocation TensorProto_DataLocation_DataLocation_MAX = TensorProto_DataLocation_EXTERNAL;
constexpr int TensorProto_DataLocation_DataLocation_ARRAYSIZE = TensorProto_DataLocation_DataLocation_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TensorProto_DataLocation_descriptor();
template<typename T>
inline const std::string& TensorProto_DataLocation_Name(T enum_t_value) {
  static_assert(::std::is_same<T, TensorProto_DataLocation>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function TensorProto_DataLocation_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    TensorProto_DataLocation_descriptor(), enum_t_value);
}
inline bool TensorProto_DataLocation_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TensorProto_DataLocation* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<TensorProto_DataLocation>(
    TensorProto_DataLocation_descriptor(), name, value);
}
enum Version : int {
  _START_VERSION = 0,
  IR_VERSION_2017_10_10 = 1,
  IR_VERSION_2017_10_30 = 2,
  IR_VERSION_2017_11_3 = 3,
  IR_VERSION_2019_1_22 = 4,
  IR_VERSION_2019_3_18 = 5,
  IR_VERSION_2019_9_19 = 6,
  IR_VERSION_2020_5_8 = 7,
  IR_VERSION = 8,
  Version_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
  Version_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
};
bool Version_IsValid(int value);
constexpr Version Version_MIN = _START_VERSION;
constexpr Version Version_MAX = IR_VERSION;
constexpr int Version_ARRAYSIZE = Version_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Version_descriptor();
template<typename T>
inline const std::string& Version_Name(T enum_t_value) {
  static_assert(::std::is_same<T, Version>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function Version_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    Version_descriptor(), enum_t_value);
}
inline bool Version_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, Version* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<Version>(
    Version_descriptor(), name, value);
}
enum OperatorStatus : int {
  EXPERIMENTAL = 0,
  STABLE = 1,
  OperatorStatus_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),
  OperatorStatus_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
};
bool OperatorStatus_IsValid(int value);
constexpr OperatorStatus OperatorStatus_MIN = EXPERIMENTAL;
constexpr OperatorStatus OperatorStatus_MAX = STABLE;
constexpr int OperatorStatus_ARRAYSIZE = OperatorStatus_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* OperatorStatus_descriptor();
template<typename T>
inline const std::string& OperatorStatus_Name(T enum_t_value) {
  static_assert(::std::is_same<T, OperatorStatus>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function OperatorStatus_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    OperatorStatus_descriptor(), enum_t_value);
}
inline bool OperatorStatus_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, OperatorStatus* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<OperatorStatus>(
    OperatorStatus_descriptor(), name, value);
}
// ===================================================================

class AttributeProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.AttributeProto) */ {
 public:
  inline AttributeProto() : AttributeProto(nullptr) {}
  ~AttributeProto() override;
  explicit constexpr AttributeProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  AttributeProto(const AttributeProto& from);
  AttributeProto(AttributeProto&& from) noexcept
    : AttributeProto() {
    *this = ::std::move(from);
  }

  inline AttributeProto& operator=(const AttributeProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline AttributeProto& operator=(AttributeProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const AttributeProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const AttributeProto* internal_default_instance() {
    return reinterpret_cast<const AttributeProto*>(
               &_AttributeProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(AttributeProto& a, AttributeProto& b) {
    a.Swap(&b);
  }
  inline void Swap(AttributeProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AttributeProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  AttributeProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<AttributeProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const AttributeProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const AttributeProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(AttributeProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.AttributeProto";
  }
  protected:
  explicit AttributeProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef AttributeProto_AttributeType AttributeType;
  static constexpr AttributeType UNDEFINED =
    AttributeProto_AttributeType_UNDEFINED;
  static constexpr AttributeType FLOAT =
    AttributeProto_AttributeType_FLOAT;
  static constexpr AttributeType INT =
    AttributeProto_AttributeType_INT;
  static constexpr AttributeType STRING =
    AttributeProto_AttributeType_STRING;
  static constexpr AttributeType TENSOR =
    AttributeProto_AttributeType_TENSOR;
  static constexpr AttributeType GRAPH =
    AttributeProto_AttributeType_GRAPH;
  static constexpr AttributeType SPARSE_TENSOR =
    AttributeProto_AttributeType_SPARSE_TENSOR;
  static constexpr AttributeType TYPE_PROTO =
    AttributeProto_AttributeType_TYPE_PROTO;
  static constexpr AttributeType FLOATS =
    AttributeProto_AttributeType_FLOATS;
  static constexpr AttributeType INTS =
    AttributeProto_AttributeType_INTS;
  static constexpr AttributeType STRINGS =
    AttributeProto_AttributeType_STRINGS;
  static constexpr AttributeType TENSORS =
    AttributeProto_AttributeType_TENSORS;
  static constexpr AttributeType GRAPHS =
    AttributeProto_AttributeType_GRAPHS;
  static constexpr AttributeType SPARSE_TENSORS =
    AttributeProto_AttributeType_SPARSE_TENSORS;
  static constexpr AttributeType TYPE_PROTOS =
    AttributeProto_AttributeType_TYPE_PROTOS;
  static inline bool AttributeType_IsValid(int value) {
    return AttributeProto_AttributeType_IsValid(value);
  }
  static constexpr AttributeType AttributeType_MIN =
    AttributeProto_AttributeType_AttributeType_MIN;
  static constexpr AttributeType AttributeType_MAX =
    AttributeProto_AttributeType_AttributeType_MAX;
  static constexpr int AttributeType_ARRAYSIZE =
    AttributeProto_AttributeType_AttributeType_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  AttributeType_descriptor() {
    return AttributeProto_AttributeType_descriptor();
  }
  template<typename T>
  static inline const std::string& AttributeType_Name(T enum_t_value) {
    static_assert(::std::is_same<T, AttributeType>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function AttributeType_Name.");
    return AttributeProto_AttributeType_Name(enum_t_value);
  }
  static inline bool AttributeType_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      AttributeType* value) {
    return AttributeProto_AttributeType_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  enum : int {
    kFloatsFieldNumber = 7,
    kIntsFieldNumber = 8,
    kStringsFieldNumber = 9,
    kTensorsFieldNumber = 10,
    kGraphsFieldNumber = 11,
    kTypeProtosFieldNumber = 15,
    kSparseTensorsFieldNumber = 23,
    kNameFieldNumber = 1,
    kSFieldNumber = 4,
    kDocStringFieldNumber = 13,
    kRefAttrNameFieldNumber = 21,
    kTFieldNumber = 5,
    kGFieldNumber = 6,
    kTpFieldNumber = 14,
    kSparseTensorFieldNumber = 22,
    kIFieldNumber = 3,
    kFFieldNumber = 2,
    kTypeFieldNumber = 20,
  };
  // repeated float floats = 7;
  int floats_size() const;
  private:
  int _internal_floats_size() const;
  public:
  void clear_floats();
  private:
  float _internal_floats(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
      _internal_floats() const;
  void _internal_add_floats(float value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
      _internal_mutable_floats();
  public:
  float floats(int index) const;
  void set_floats(int index, float value);
  void add_floats(float value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
      floats() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
      mutable_floats();

  // repeated int64 ints = 8;
  int ints_size() const;
  private:
  int _internal_ints_size() const;
  public:
  void clear_ints();
  private:
  int64_t _internal_ints(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
      _internal_ints() const;
  void _internal_add_ints(int64_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
      _internal_mutable_ints();
  public:
  int64_t ints(int index) const;
  void set_ints(int index, int64_t value);
  void add_ints(int64_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
      ints() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
      mutable_ints();

  // repeated bytes strings = 9;
  int strings_size() const;
  private:
  int _internal_strings_size() const;
  public:
  void clear_strings();
  const std::string& strings(int index) const;
  std::string* mutable_strings(int index);
  void set_strings(int index, const std::string& value);
  void set_strings(int index, std::string&& value);
  void set_strings(int index, const char* value);
  void set_strings(int index, const void* value, size_t size);
  std::string* add_strings();
  void add_strings(const std::string& value);
  void add_strings(std::string&& value);
  void add_strings(const char* value);
  void add_strings(const void* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& strings() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_strings();
  private:
  const std::string& _internal_strings(int index) const;
  std::string* _internal_add_strings();
  public:

  // repeated .onnx.TensorProto tensors = 10;
  int tensors_size() const;
  private:
  int _internal_tensors_size() const;
  public:
  void clear_tensors();
  ::onnx::TensorProto* mutable_tensors(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto >*
      mutable_tensors();
  private:
  const ::onnx::TensorProto& _internal_tensors(int index) const;
  ::onnx::TensorProto* _internal_add_tensors();
  public:
  const ::onnx::TensorProto& tensors(int index) const;
  ::onnx::TensorProto* add_tensors();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto >&
      tensors() const;

  // repeated .onnx.GraphProto graphs = 11;
  int graphs_size() const;
  private:
  int _internal_graphs_size() const;
  public:
  void clear_graphs();
  ::onnx::GraphProto* mutable_graphs(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::GraphProto >*
      mutable_graphs();
  private:
  const ::onnx::GraphProto& _internal_graphs(int index) const;
  ::onnx::GraphProto* _internal_add_graphs();
  public:
  const ::onnx::GraphProto& graphs(int index) const;
  ::onnx::GraphProto* add_graphs();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::GraphProto >&
      graphs() const;

  // repeated .onnx.TypeProto type_protos = 15;
  int type_protos_size() const;
  private:
  int _internal_type_protos_size() const;
  public:
  void clear_type_protos();
  ::onnx::TypeProto* mutable_type_protos(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TypeProto >*
      mutable_type_protos();
  private:
  const ::onnx::TypeProto& _internal_type_protos(int index) const;
  ::onnx::TypeProto* _internal_add_type_protos();
  public:
  const ::onnx::TypeProto& type_protos(int index) const;
  ::onnx::TypeProto* add_type_protos();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TypeProto >&
      type_protos() const;

  // repeated .onnx.SparseTensorProto sparse_tensors = 23;
  int sparse_tensors_size() const;
  private:
  int _internal_sparse_tensors_size() const;
  public:
  void clear_sparse_tensors();
  ::onnx::SparseTensorProto* mutable_sparse_tensors(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto >*
      mutable_sparse_tensors();
  private:
  const ::onnx::SparseTensorProto& _internal_sparse_tensors(int index) const;
  ::onnx::SparseTensorProto* _internal_add_sparse_tensors();
  public:
  const ::onnx::SparseTensorProto& sparse_tensors(int index) const;
  ::onnx::SparseTensorProto* add_sparse_tensors();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto >&
      sparse_tensors() const;

  // string name = 1;
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // bytes s = 4;
  void clear_s();
  const std::string& s() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_s(ArgT0&& arg0, ArgT... args);
  std::string* mutable_s();
  PROTOBUF_NODISCARD std::string* release_s();
  void set_allocated_s(std::string* s);
  private:
  const std::string& _internal_s() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_s(const std::string& value);
  std::string* _internal_mutable_s();
  public:

  // string doc_string = 13;
  void clear_doc_string();
  const std::string& doc_string() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_doc_string(ArgT0&& arg0, ArgT... args);
  std::string* mutable_doc_string();
  PROTOBUF_NODISCARD std::string* release_doc_string();
  void set_allocated_doc_string(std::string* doc_string);
  private:
  const std::string& _internal_doc_string() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_doc_string(const std::string& value);
  std::string* _internal_mutable_doc_string();
  public:

  // string ref_attr_name = 21;
  void clear_ref_attr_name();
  const std::string& ref_attr_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_ref_attr_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_ref_attr_name();
  PROTOBUF_NODISCARD std::string* release_ref_attr_name();
  void set_allocated_ref_attr_name(std::string* ref_attr_name);
  private:
  const std::string& _internal_ref_attr_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_ref_attr_name(const std::string& value);
  std::string* _internal_mutable_ref_attr_name();
  public:

  // .onnx.TensorProto t = 5;
  bool has_t() const;
  private:
  bool _internal_has_t() const;
  public:
  void clear_t();
  const ::onnx::TensorProto& t() const;
  PROTOBUF_NODISCARD ::onnx::TensorProto* release_t();
  ::onnx::TensorProto* mutable_t();
  void set_allocated_t(::onnx::TensorProto* t);
  private:
  const ::onnx::TensorProto& _internal_t() const;
  ::onnx::TensorProto* _internal_mutable_t();
  public:
  void unsafe_arena_set_allocated_t(
      ::onnx::TensorProto* t);
  ::onnx::TensorProto* unsafe_arena_release_t();

  // .onnx.GraphProto g = 6;
  bool has_g() const;
  private:
  bool _internal_has_g() const;
  public:
  void clear_g();
  const ::onnx::GraphProto& g() const;
  PROTOBUF_NODISCARD ::onnx::GraphProto* release_g();
  ::onnx::GraphProto* mutable_g();
  void set_allocated_g(::onnx::GraphProto* g);
  private:
  const ::onnx::GraphProto& _internal_g() const;
  ::onnx::GraphProto* _internal_mutable_g();
  public:
  void unsafe_arena_set_allocated_g(
      ::onnx::GraphProto* g);
  ::onnx::GraphProto* unsafe_arena_release_g();

  // .onnx.TypeProto tp = 14;
  bool has_tp() const;
  private:
  bool _internal_has_tp() const;
  public:
  void clear_tp();
  const ::onnx::TypeProto& tp() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto* release_tp();
  ::onnx::TypeProto* mutable_tp();
  void set_allocated_tp(::onnx::TypeProto* tp);
  private:
  const ::onnx::TypeProto& _internal_tp() const;
  ::onnx::TypeProto* _internal_mutable_tp();
  public:
  void unsafe_arena_set_allocated_tp(
      ::onnx::TypeProto* tp);
  ::onnx::TypeProto* unsafe_arena_release_tp();

  // .onnx.SparseTensorProto sparse_tensor = 22;
  bool has_sparse_tensor() const;
  private:
  bool _internal_has_sparse_tensor() const;
  public:
  void clear_sparse_tensor();
  const ::onnx::SparseTensorProto& sparse_tensor() const;
  PROTOBUF_NODISCARD ::onnx::SparseTensorProto* release_sparse_tensor();
  ::onnx::SparseTensorProto* mutable_sparse_tensor();
  void set_allocated_sparse_tensor(::onnx::SparseTensorProto* sparse_tensor);
  private:
  const ::onnx::SparseTensorProto& _internal_sparse_tensor() const;
  ::onnx::SparseTensorProto* _internal_mutable_sparse_tensor();
  public:
  void unsafe_arena_set_allocated_sparse_tensor(
      ::onnx::SparseTensorProto* sparse_tensor);
  ::onnx::SparseTensorProto* unsafe_arena_release_sparse_tensor();

  // int64 i = 3;
  void clear_i();
  int64_t i() const;
  void set_i(int64_t value);
  private:
  int64_t _internal_i() const;
  void _internal_set_i(int64_t value);
  public:

  // float f = 2;
  void clear_f();
  float f() const;
  void set_f(float value);
  private:
  float _internal_f() const;
  void _internal_set_f(float value);
  public:

  // .onnx.AttributeProto.AttributeType type = 20;
  void clear_type();
  ::onnx::AttributeProto_AttributeType type() const;
  void set_type(::onnx::AttributeProto_AttributeType value);
  private:
  ::onnx::AttributeProto_AttributeType _internal_type() const;
  void _internal_set_type(::onnx::AttributeProto_AttributeType value);
  public:

  // @@protoc_insertion_point(class_scope:onnx.AttributeProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< float > floats_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t > ints_;
  mutable std::atomic<int> _ints_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> strings_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto > tensors_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::GraphProto > graphs_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TypeProto > type_protos_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto > sparse_tensors_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr s_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr doc_string_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr ref_attr_name_;
  ::onnx::TensorProto* t_;
  ::onnx::GraphProto* g_;
  ::onnx::TypeProto* tp_;
  ::onnx::SparseTensorProto* sparse_tensor_;
  int64_t i_;
  float f_;
  int type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class ValueInfoProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.ValueInfoProto) */ {
 public:
  inline ValueInfoProto() : ValueInfoProto(nullptr) {}
  ~ValueInfoProto() override;
  explicit constexpr ValueInfoProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ValueInfoProto(const ValueInfoProto& from);
  ValueInfoProto(ValueInfoProto&& from) noexcept
    : ValueInfoProto() {
    *this = ::std::move(from);
  }

  inline ValueInfoProto& operator=(const ValueInfoProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ValueInfoProto& operator=(ValueInfoProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ValueInfoProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const ValueInfoProto* internal_default_instance() {
    return reinterpret_cast<const ValueInfoProto*>(
               &_ValueInfoProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(ValueInfoProto& a, ValueInfoProto& b) {
    a.Swap(&b);
  }
  inline void Swap(ValueInfoProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ValueInfoProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ValueInfoProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ValueInfoProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ValueInfoProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ValueInfoProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ValueInfoProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.ValueInfoProto";
  }
  protected:
  explicit ValueInfoProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kNameFieldNumber = 1,
    kDocStringFieldNumber = 3,
    kTypeFieldNumber = 2,
  };
  // string name = 1;
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // string doc_string = 3;
  void clear_doc_string();
  const std::string& doc_string() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_doc_string(ArgT0&& arg0, ArgT... args);
  std::string* mutable_doc_string();
  PROTOBUF_NODISCARD std::string* release_doc_string();
  void set_allocated_doc_string(std::string* doc_string);
  private:
  const std::string& _internal_doc_string() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_doc_string(const std::string& value);
  std::string* _internal_mutable_doc_string();
  public:

  // .onnx.TypeProto type = 2;
  bool has_type() const;
  private:
  bool _internal_has_type() const;
  public:
  void clear_type();
  const ::onnx::TypeProto& type() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto* release_type();
  ::onnx::TypeProto* mutable_type();
  void set_allocated_type(::onnx::TypeProto* type);
  private:
  const ::onnx::TypeProto& _internal_type() const;
  ::onnx::TypeProto* _internal_mutable_type();
  public:
  void unsafe_arena_set_allocated_type(
      ::onnx::TypeProto* type);
  ::onnx::TypeProto* unsafe_arena_release_type();

  // @@protoc_insertion_point(class_scope:onnx.ValueInfoProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr doc_string_;
  ::onnx::TypeProto* type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class NodeProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.NodeProto) */ {
 public:
  inline NodeProto() : NodeProto(nullptr) {}
  ~NodeProto() override;
  explicit constexpr NodeProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  NodeProto(const NodeProto& from);
  NodeProto(NodeProto&& from) noexcept
    : NodeProto() {
    *this = ::std::move(from);
  }

  inline NodeProto& operator=(const NodeProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline NodeProto& operator=(NodeProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const NodeProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const NodeProto* internal_default_instance() {
    return reinterpret_cast<const NodeProto*>(
               &_NodeProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(NodeProto& a, NodeProto& b) {
    a.Swap(&b);
  }
  inline void Swap(NodeProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(NodeProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  NodeProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<NodeProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const NodeProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const NodeProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(NodeProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.NodeProto";
  }
  protected:
  explicit NodeProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kInputFieldNumber = 1,
    kOutputFieldNumber = 2,
    kAttributeFieldNumber = 5,
    kNameFieldNumber = 3,
    kOpTypeFieldNumber = 4,
    kDocStringFieldNumber = 6,
    kDomainFieldNumber = 7,
  };
  // repeated string input = 1;
  int input_size() const;
  private:
  int _internal_input_size() const;
  public:
  void clear_input();
  const std::string& input(int index) const;
  std::string* mutable_input(int index);
  void set_input(int index, const std::string& value);
  void set_input(int index, std::string&& value);
  void set_input(int index, const char* value);
  void set_input(int index, const char* value, size_t size);
  std::string* add_input();
  void add_input(const std::string& value);
  void add_input(std::string&& value);
  void add_input(const char* value);
  void add_input(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& input() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_input();
  private:
  const std::string& _internal_input(int index) const;
  std::string* _internal_add_input();
  public:

  // repeated string output = 2;
  int output_size() const;
  private:
  int _internal_output_size() const;
  public:
  void clear_output();
  const std::string& output(int index) const;
  std::string* mutable_output(int index);
  void set_output(int index, const std::string& value);
  void set_output(int index, std::string&& value);
  void set_output(int index, const char* value);
  void set_output(int index, const char* value, size_t size);
  std::string* add_output();
  void add_output(const std::string& value);
  void add_output(std::string&& value);
  void add_output(const char* value);
  void add_output(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& output() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_output();
  private:
  const std::string& _internal_output(int index) const;
  std::string* _internal_add_output();
  public:

  // repeated .onnx.AttributeProto attribute = 5;
  int attribute_size() const;
  private:
  int _internal_attribute_size() const;
  public:
  void clear_attribute();
  ::onnx::AttributeProto* mutable_attribute(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::AttributeProto >*
      mutable_attribute();
  private:
  const ::onnx::AttributeProto& _internal_attribute(int index) const;
  ::onnx::AttributeProto* _internal_add_attribute();
  public:
  const ::onnx::AttributeProto& attribute(int index) const;
  ::onnx::AttributeProto* add_attribute();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::AttributeProto >&
      attribute() const;

  // string name = 3;
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // string op_type = 4;
  void clear_op_type();
  const std::string& op_type() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_op_type(ArgT0&& arg0, ArgT... args);
  std::string* mutable_op_type();
  PROTOBUF_NODISCARD std::string* release_op_type();
  void set_allocated_op_type(std::string* op_type);
  private:
  const std::string& _internal_op_type() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_op_type(const std::string& value);
  std::string* _internal_mutable_op_type();
  public:

  // string doc_string = 6;
  void clear_doc_string();
  const std::string& doc_string() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_doc_string(ArgT0&& arg0, ArgT... args);
  std::string* mutable_doc_string();
  PROTOBUF_NODISCARD std::string* release_doc_string();
  void set_allocated_doc_string(std::string* doc_string);
  private:
  const std::string& _internal_doc_string() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_doc_string(const std::string& value);
  std::string* _internal_mutable_doc_string();
  public:

  // string domain = 7;
  void clear_domain();
  const std::string& domain() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_domain(ArgT0&& arg0, ArgT... args);
  std::string* mutable_domain();
  PROTOBUF_NODISCARD std::string* release_domain();
  void set_allocated_domain(std::string* domain);
  private:
  const std::string& _internal_domain() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_domain(const std::string& value);
  std::string* _internal_mutable_domain();
  public:

  // @@protoc_insertion_point(class_scope:onnx.NodeProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> input_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> output_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::AttributeProto > attribute_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr op_type_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr doc_string_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr domain_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TrainingInfoProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TrainingInfoProto) */ {
 public:
  inline TrainingInfoProto() : TrainingInfoProto(nullptr) {}
  ~TrainingInfoProto() override;
  explicit constexpr TrainingInfoProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TrainingInfoProto(const TrainingInfoProto& from);
  TrainingInfoProto(TrainingInfoProto&& from) noexcept
    : TrainingInfoProto() {
    *this = ::std::move(from);
  }

  inline TrainingInfoProto& operator=(const TrainingInfoProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline TrainingInfoProto& operator=(TrainingInfoProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TrainingInfoProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const TrainingInfoProto* internal_default_instance() {
    return reinterpret_cast<const TrainingInfoProto*>(
               &_TrainingInfoProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(TrainingInfoProto& a, TrainingInfoProto& b) {
    a.Swap(&b);
  }
  inline void Swap(TrainingInfoProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TrainingInfoProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TrainingInfoProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TrainingInfoProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TrainingInfoProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TrainingInfoProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TrainingInfoProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TrainingInfoProto";
  }
  protected:
  explicit TrainingInfoProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kInitializationBindingFieldNumber = 3,
    kUpdateBindingFieldNumber = 4,
    kInitializationFieldNumber = 1,
    kAlgorithmFieldNumber = 2,
  };
  // repeated .onnx.StringStringEntryProto initialization_binding = 3;
  int initialization_binding_size() const;
  private:
  int _internal_initialization_binding_size() const;
  public:
  void clear_initialization_binding();
  ::onnx::StringStringEntryProto* mutable_initialization_binding(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
      mutable_initialization_binding();
  private:
  const ::onnx::StringStringEntryProto& _internal_initialization_binding(int index) const;
  ::onnx::StringStringEntryProto* _internal_add_initialization_binding();
  public:
  const ::onnx::StringStringEntryProto& initialization_binding(int index) const;
  ::onnx::StringStringEntryProto* add_initialization_binding();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
      initialization_binding() const;

  // repeated .onnx.StringStringEntryProto update_binding = 4;
  int update_binding_size() const;
  private:
  int _internal_update_binding_size() const;
  public:
  void clear_update_binding();
  ::onnx::StringStringEntryProto* mutable_update_binding(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
      mutable_update_binding();
  private:
  const ::onnx::StringStringEntryProto& _internal_update_binding(int index) const;
  ::onnx::StringStringEntryProto* _internal_add_update_binding();
  public:
  const ::onnx::StringStringEntryProto& update_binding(int index) const;
  ::onnx::StringStringEntryProto* add_update_binding();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
      update_binding() const;

  // .onnx.GraphProto initialization = 1;
  bool has_initialization() const;
  private:
  bool _internal_has_initialization() const;
  public:
  void clear_initialization();
  const ::onnx::GraphProto& initialization() const;
  PROTOBUF_NODISCARD ::onnx::GraphProto* release_initialization();
  ::onnx::GraphProto* mutable_initialization();
  void set_allocated_initialization(::onnx::GraphProto* initialization);
  private:
  const ::onnx::GraphProto& _internal_initialization() const;
  ::onnx::GraphProto* _internal_mutable_initialization();
  public:
  void unsafe_arena_set_allocated_initialization(
      ::onnx::GraphProto* initialization);
  ::onnx::GraphProto* unsafe_arena_release_initialization();

  // .onnx.GraphProto algorithm = 2;
  bool has_algorithm() const;
  private:
  bool _internal_has_algorithm() const;
  public:
  void clear_algorithm();
  const ::onnx::GraphProto& algorithm() const;
  PROTOBUF_NODISCARD ::onnx::GraphProto* release_algorithm();
  ::onnx::GraphProto* mutable_algorithm();
  void set_allocated_algorithm(::onnx::GraphProto* algorithm);
  private:
  const ::onnx::GraphProto& _internal_algorithm() const;
  ::onnx::GraphProto* _internal_mutable_algorithm();
  public:
  void unsafe_arena_set_allocated_algorithm(
      ::onnx::GraphProto* algorithm);
  ::onnx::GraphProto* unsafe_arena_release_algorithm();

  // @@protoc_insertion_point(class_scope:onnx.TrainingInfoProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto > initialization_binding_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto > update_binding_;
  ::onnx::GraphProto* initialization_;
  ::onnx::GraphProto* algorithm_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class ModelProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.ModelProto) */ {
 public:
  inline ModelProto() : ModelProto(nullptr) {}
  ~ModelProto() override;
  explicit constexpr ModelProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ModelProto(const ModelProto& from);
  ModelProto(ModelProto&& from) noexcept
    : ModelProto() {
    *this = ::std::move(from);
  }

  inline ModelProto& operator=(const ModelProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ModelProto& operator=(ModelProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ModelProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const ModelProto* internal_default_instance() {
    return reinterpret_cast<const ModelProto*>(
               &_ModelProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(ModelProto& a, ModelProto& b) {
    a.Swap(&b);
  }
  inline void Swap(ModelProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ModelProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ModelProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ModelProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ModelProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const ModelProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ModelProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.ModelProto";
  }
  protected:
  explicit ModelProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kOpsetImportFieldNumber = 8,
    kMetadataPropsFieldNumber = 14,
    kTrainingInfoFieldNumber = 20,
    kFunctionsFieldNumber = 25,
    kProducerNameFieldNumber = 2,
    kProducerVersionFieldNumber = 3,
    kDomainFieldNumber = 4,
    kDocStringFieldNumber = 6,
    kGraphFieldNumber = 7,
    kIrVersionFieldNumber = 1,
    kModelVersionFieldNumber = 5,
  };
  // repeated .onnx.OperatorSetIdProto opset_import = 8;
  int opset_import_size() const;
  private:
  int _internal_opset_import_size() const;
  public:
  void clear_opset_import();
  ::onnx::OperatorSetIdProto* mutable_opset_import(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto >*
      mutable_opset_import();
  private:
  const ::onnx::OperatorSetIdProto& _internal_opset_import(int index) const;
  ::onnx::OperatorSetIdProto* _internal_add_opset_import();
  public:
  const ::onnx::OperatorSetIdProto& opset_import(int index) const;
  ::onnx::OperatorSetIdProto* add_opset_import();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto >&
      opset_import() const;

  // repeated .onnx.StringStringEntryProto metadata_props = 14;
  int metadata_props_size() const;
  private:
  int _internal_metadata_props_size() const;
  public:
  void clear_metadata_props();
  ::onnx::StringStringEntryProto* mutable_metadata_props(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
      mutable_metadata_props();
  private:
  const ::onnx::StringStringEntryProto& _internal_metadata_props(int index) const;
  ::onnx::StringStringEntryProto* _internal_add_metadata_props();
  public:
  const ::onnx::StringStringEntryProto& metadata_props(int index) const;
  ::onnx::StringStringEntryProto* add_metadata_props();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
      metadata_props() const;

  // repeated .onnx.TrainingInfoProto training_info = 20;
  int training_info_size() const;
  private:
  int _internal_training_info_size() const;
  public:
  void clear_training_info();
  ::onnx::TrainingInfoProto* mutable_training_info(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TrainingInfoProto >*
      mutable_training_info();
  private:
  const ::onnx::TrainingInfoProto& _internal_training_info(int index) const;
  ::onnx::TrainingInfoProto* _internal_add_training_info();
  public:
  const ::onnx::TrainingInfoProto& training_info(int index) const;
  ::onnx::TrainingInfoProto* add_training_info();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TrainingInfoProto >&
      training_info() const;

  // repeated .onnx.FunctionProto functions = 25;
  int functions_size() const;
  private:
  int _internal_functions_size() const;
  public:
  void clear_functions();
  ::onnx::FunctionProto* mutable_functions(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::FunctionProto >*
      mutable_functions();
  private:
  const ::onnx::FunctionProto& _internal_functions(int index) const;
  ::onnx::FunctionProto* _internal_add_functions();
  public:
  const ::onnx::FunctionProto& functions(int index) const;
  ::onnx::FunctionProto* add_functions();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::FunctionProto >&
      functions() const;

  // string producer_name = 2;
  void clear_producer_name();
  const std::string& producer_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_producer_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_producer_name();
  PROTOBUF_NODISCARD std::string* release_producer_name();
  void set_allocated_producer_name(std::string* producer_name);
  private:
  const std::string& _internal_producer_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_producer_name(const std::string& value);
  std::string* _internal_mutable_producer_name();
  public:

  // string producer_version = 3;
  void clear_producer_version();
  const std::string& producer_version() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_producer_version(ArgT0&& arg0, ArgT... args);
  std::string* mutable_producer_version();
  PROTOBUF_NODISCARD std::string* release_producer_version();
  void set_allocated_producer_version(std::string* producer_version);
  private:
  const std::string& _internal_producer_version() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_producer_version(const std::string& value);
  std::string* _internal_mutable_producer_version();
  public:

  // string domain = 4;
  void clear_domain();
  const std::string& domain() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_domain(ArgT0&& arg0, ArgT... args);
  std::string* mutable_domain();
  PROTOBUF_NODISCARD std::string* release_domain();
  void set_allocated_domain(std::string* domain);
  private:
  const std::string& _internal_domain() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_domain(const std::string& value);
  std::string* _internal_mutable_domain();
  public:

  // string doc_string = 6;
  void clear_doc_string();
  const std::string& doc_string() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_doc_string(ArgT0&& arg0, ArgT... args);
  std::string* mutable_doc_string();
  PROTOBUF_NODISCARD std::string* release_doc_string();
  void set_allocated_doc_string(std::string* doc_string);
  private:
  const std::string& _internal_doc_string() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_doc_string(const std::string& value);
  std::string* _internal_mutable_doc_string();
  public:

  // .onnx.GraphProto graph = 7;
  bool has_graph() const;
  private:
  bool _internal_has_graph() const;
  public:
  void clear_graph();
  const ::onnx::GraphProto& graph() const;
  PROTOBUF_NODISCARD ::onnx::GraphProto* release_graph();
  ::onnx::GraphProto* mutable_graph();
  void set_allocated_graph(::onnx::GraphProto* graph);
  private:
  const ::onnx::GraphProto& _internal_graph() const;
  ::onnx::GraphProto* _internal_mutable_graph();
  public:
  void unsafe_arena_set_allocated_graph(
      ::onnx::GraphProto* graph);
  ::onnx::GraphProto* unsafe_arena_release_graph();

  // int64 ir_version = 1;
  void clear_ir_version();
  int64_t ir_version() const;
  void set_ir_version(int64_t value);
  private:
  int64_t _internal_ir_version() const;
  void _internal_set_ir_version(int64_t value);
  public:

  // int64 model_version = 5;
  void clear_model_version();
  int64_t model_version() const;
  void set_model_version(int64_t value);
  private:
  int64_t _internal_model_version() const;
  void _internal_set_model_version(int64_t value);
  public:

  // @@protoc_insertion_point(class_scope:onnx.ModelProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto > opset_import_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto > metadata_props_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TrainingInfoProto > training_info_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::FunctionProto > functions_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr producer_name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr producer_version_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr domain_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr doc_string_;
  ::onnx::GraphProto* graph_;
  int64_t ir_version_;
  int64_t model_version_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class StringStringEntryProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.StringStringEntryProto) */ {
 public:
  inline StringStringEntryProto() : StringStringEntryProto(nullptr) {}
  ~StringStringEntryProto() override;
  explicit constexpr StringStringEntryProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  StringStringEntryProto(const StringStringEntryProto& from);
  StringStringEntryProto(StringStringEntryProto&& from) noexcept
    : StringStringEntryProto() {
    *this = ::std::move(from);
  }

  inline StringStringEntryProto& operator=(const StringStringEntryProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline StringStringEntryProto& operator=(StringStringEntryProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const StringStringEntryProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const StringStringEntryProto* internal_default_instance() {
    return reinterpret_cast<const StringStringEntryProto*>(
               &_StringStringEntryProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(StringStringEntryProto& a, StringStringEntryProto& b) {
    a.Swap(&b);
  }
  inline void Swap(StringStringEntryProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(StringStringEntryProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  StringStringEntryProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<StringStringEntryProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const StringStringEntryProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const StringStringEntryProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(StringStringEntryProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.StringStringEntryProto";
  }
  protected:
  explicit StringStringEntryProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kKeyFieldNumber = 1,
    kValueFieldNumber = 2,
  };
  // string key = 1;
  void clear_key();
  const std::string& key() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_key(ArgT0&& arg0, ArgT... args);
  std::string* mutable_key();
  PROTOBUF_NODISCARD std::string* release_key();
  void set_allocated_key(std::string* key);
  private:
  const std::string& _internal_key() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_key(const std::string& value);
  std::string* _internal_mutable_key();
  public:

  // string value = 2;
  void clear_value();
  const std::string& value() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_value(ArgT0&& arg0, ArgT... args);
  std::string* mutable_value();
  PROTOBUF_NODISCARD std::string* release_value();
  void set_allocated_value(std::string* value);
  private:
  const std::string& _internal_value() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_value(const std::string& value);
  std::string* _internal_mutable_value();
  public:

  // @@protoc_insertion_point(class_scope:onnx.StringStringEntryProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr key_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr value_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TensorAnnotation final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TensorAnnotation) */ {
 public:
  inline TensorAnnotation() : TensorAnnotation(nullptr) {}
  ~TensorAnnotation() override;
  explicit constexpr TensorAnnotation(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TensorAnnotation(const TensorAnnotation& from);
  TensorAnnotation(TensorAnnotation&& from) noexcept
    : TensorAnnotation() {
    *this = ::std::move(from);
  }

  inline TensorAnnotation& operator=(const TensorAnnotation& from) {
    CopyFrom(from);
    return *this;
  }
  inline TensorAnnotation& operator=(TensorAnnotation&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TensorAnnotation& default_instance() {
    return *internal_default_instance();
  }
  static inline const TensorAnnotation* internal_default_instance() {
    return reinterpret_cast<const TensorAnnotation*>(
               &_TensorAnnotation_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(TensorAnnotation& a, TensorAnnotation& b) {
    a.Swap(&b);
  }
  inline void Swap(TensorAnnotation* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TensorAnnotation* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TensorAnnotation* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TensorAnnotation>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TensorAnnotation& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TensorAnnotation& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TensorAnnotation* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TensorAnnotation";
  }
  protected:
  explicit TensorAnnotation(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kQuantParameterTensorNamesFieldNumber = 2,
    kTensorNameFieldNumber = 1,
  };
  // repeated .onnx.StringStringEntryProto quant_parameter_tensor_names = 2;
  int quant_parameter_tensor_names_size() const;
  private:
  int _internal_quant_parameter_tensor_names_size() const;
  public:
  void clear_quant_parameter_tensor_names();
  ::onnx::StringStringEntryProto* mutable_quant_parameter_tensor_names(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
      mutable_quant_parameter_tensor_names();
  private:
  const ::onnx::StringStringEntryProto& _internal_quant_parameter_tensor_names(int index) const;
  ::onnx::StringStringEntryProto* _internal_add_quant_parameter_tensor_names();
  public:
  const ::onnx::StringStringEntryProto& quant_parameter_tensor_names(int index) const;
  ::onnx::StringStringEntryProto* add_quant_parameter_tensor_names();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
      quant_parameter_tensor_names() const;

  // string tensor_name = 1;
  void clear_tensor_name();
  const std::string& tensor_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_tensor_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_tensor_name();
  PROTOBUF_NODISCARD std::string* release_tensor_name();
  void set_allocated_tensor_name(std::string* tensor_name);
  private:
  const std::string& _internal_tensor_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_tensor_name(const std::string& value);
  std::string* _internal_mutable_tensor_name();
  public:

  // @@protoc_insertion_point(class_scope:onnx.TensorAnnotation)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto > quant_parameter_tensor_names_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tensor_name_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class GraphProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.GraphProto) */ {
 public:
  inline GraphProto() : GraphProto(nullptr) {}
  ~GraphProto() override;
  explicit constexpr GraphProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  GraphProto(const GraphProto& from);
  GraphProto(GraphProto&& from) noexcept
    : GraphProto() {
    *this = ::std::move(from);
  }

  inline GraphProto& operator=(const GraphProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline GraphProto& operator=(GraphProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GraphProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const GraphProto* internal_default_instance() {
    return reinterpret_cast<const GraphProto*>(
               &_GraphProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(GraphProto& a, GraphProto& b) {
    a.Swap(&b);
  }
  inline void Swap(GraphProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GraphProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GraphProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<GraphProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const GraphProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const GraphProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(GraphProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.GraphProto";
  }
  protected:
  explicit GraphProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kNodeFieldNumber = 1,
    kInitializerFieldNumber = 5,
    kInputFieldNumber = 11,
    kOutputFieldNumber = 12,
    kValueInfoFieldNumber = 13,
    kQuantizationAnnotationFieldNumber = 14,
    kSparseInitializerFieldNumber = 15,
    kNameFieldNumber = 2,
    kDocStringFieldNumber = 10,
  };
  // repeated .onnx.NodeProto node = 1;
  int node_size() const;
  private:
  int _internal_node_size() const;
  public:
  void clear_node();
  ::onnx::NodeProto* mutable_node(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto >*
      mutable_node();
  private:
  const ::onnx::NodeProto& _internal_node(int index) const;
  ::onnx::NodeProto* _internal_add_node();
  public:
  const ::onnx::NodeProto& node(int index) const;
  ::onnx::NodeProto* add_node();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto >&
      node() const;

  // repeated .onnx.TensorProto initializer = 5;
  int initializer_size() const;
  private:
  int _internal_initializer_size() const;
  public:
  void clear_initializer();
  ::onnx::TensorProto* mutable_initializer(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto >*
      mutable_initializer();
  private:
  const ::onnx::TensorProto& _internal_initializer(int index) const;
  ::onnx::TensorProto* _internal_add_initializer();
  public:
  const ::onnx::TensorProto& initializer(int index) const;
  ::onnx::TensorProto* add_initializer();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto >&
      initializer() const;

  // repeated .onnx.ValueInfoProto input = 11;
  int input_size() const;
  private:
  int _internal_input_size() const;
  public:
  void clear_input();
  ::onnx::ValueInfoProto* mutable_input(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >*
      mutable_input();
  private:
  const ::onnx::ValueInfoProto& _internal_input(int index) const;
  ::onnx::ValueInfoProto* _internal_add_input();
  public:
  const ::onnx::ValueInfoProto& input(int index) const;
  ::onnx::ValueInfoProto* add_input();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >&
      input() const;

  // repeated .onnx.ValueInfoProto output = 12;
  int output_size() const;
  private:
  int _internal_output_size() const;
  public:
  void clear_output();
  ::onnx::ValueInfoProto* mutable_output(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >*
      mutable_output();
  private:
  const ::onnx::ValueInfoProto& _internal_output(int index) const;
  ::onnx::ValueInfoProto* _internal_add_output();
  public:
  const ::onnx::ValueInfoProto& output(int index) const;
  ::onnx::ValueInfoProto* add_output();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >&
      output() const;

  // repeated .onnx.ValueInfoProto value_info = 13;
  int value_info_size() const;
  private:
  int _internal_value_info_size() const;
  public:
  void clear_value_info();
  ::onnx::ValueInfoProto* mutable_value_info(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >*
      mutable_value_info();
  private:
  const ::onnx::ValueInfoProto& _internal_value_info(int index) const;
  ::onnx::ValueInfoProto* _internal_add_value_info();
  public:
  const ::onnx::ValueInfoProto& value_info(int index) const;
  ::onnx::ValueInfoProto* add_value_info();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >&
      value_info() const;

  // repeated .onnx.TensorAnnotation quantization_annotation = 14;
  int quantization_annotation_size() const;
  private:
  int _internal_quantization_annotation_size() const;
  public:
  void clear_quantization_annotation();
  ::onnx::TensorAnnotation* mutable_quantization_annotation(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorAnnotation >*
      mutable_quantization_annotation();
  private:
  const ::onnx::TensorAnnotation& _internal_quantization_annotation(int index) const;
  ::onnx::TensorAnnotation* _internal_add_quantization_annotation();
  public:
  const ::onnx::TensorAnnotation& quantization_annotation(int index) const;
  ::onnx::TensorAnnotation* add_quantization_annotation();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorAnnotation >&
      quantization_annotation() const;

  // repeated .onnx.SparseTensorProto sparse_initializer = 15;
  int sparse_initializer_size() const;
  private:
  int _internal_sparse_initializer_size() const;
  public:
  void clear_sparse_initializer();
  ::onnx::SparseTensorProto* mutable_sparse_initializer(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto >*
      mutable_sparse_initializer();
  private:
  const ::onnx::SparseTensorProto& _internal_sparse_initializer(int index) const;
  ::onnx::SparseTensorProto* _internal_add_sparse_initializer();
  public:
  const ::onnx::SparseTensorProto& sparse_initializer(int index) const;
  ::onnx::SparseTensorProto* add_sparse_initializer();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto >&
      sparse_initializer() const;

  // string name = 2;
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // string doc_string = 10;
  void clear_doc_string();
  const std::string& doc_string() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_doc_string(ArgT0&& arg0, ArgT... args);
  std::string* mutable_doc_string();
  PROTOBUF_NODISCARD std::string* release_doc_string();
  void set_allocated_doc_string(std::string* doc_string);
  private:
  const std::string& _internal_doc_string() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_doc_string(const std::string& value);
  std::string* _internal_mutable_doc_string();
  public:

  // @@protoc_insertion_point(class_scope:onnx.GraphProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto > node_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto > initializer_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto > input_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto > output_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto > value_info_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorAnnotation > quantization_annotation_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto > sparse_initializer_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr doc_string_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TensorProto_Segment final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TensorProto.Segment) */ {
 public:
  inline TensorProto_Segment() : TensorProto_Segment(nullptr) {}
  ~TensorProto_Segment() override;
  explicit constexpr TensorProto_Segment(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TensorProto_Segment(const TensorProto_Segment& from);
  TensorProto_Segment(TensorProto_Segment&& from) noexcept
    : TensorProto_Segment() {
    *this = ::std::move(from);
  }

  inline TensorProto_Segment& operator=(const TensorProto_Segment& from) {
    CopyFrom(from);
    return *this;
  }
  inline TensorProto_Segment& operator=(TensorProto_Segment&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TensorProto_Segment& default_instance() {
    return *internal_default_instance();
  }
  static inline const TensorProto_Segment* internal_default_instance() {
    return reinterpret_cast<const TensorProto_Segment*>(
               &_TensorProto_Segment_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    8;

  friend void swap(TensorProto_Segment& a, TensorProto_Segment& b) {
    a.Swap(&b);
  }
  inline void Swap(TensorProto_Segment* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TensorProto_Segment* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TensorProto_Segment* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TensorProto_Segment>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TensorProto_Segment& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TensorProto_Segment& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TensorProto_Segment* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TensorProto.Segment";
  }
  protected:
  explicit TensorProto_Segment(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kBeginFieldNumber = 1,
    kEndFieldNumber = 2,
  };
  // int64 begin = 1;
  void clear_begin();
  int64_t begin() const;
  void set_begin(int64_t value);
  private:
  int64_t _internal_begin() const;
  void _internal_set_begin(int64_t value);
  public:

  // int64 end = 2;
  void clear_end();
  int64_t end() const;
  void set_end(int64_t value);
  private:
  int64_t _internal_end() const;
  void _internal_set_end(int64_t value);
  public:

  // @@protoc_insertion_point(class_scope:onnx.TensorProto.Segment)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int64_t begin_;
  int64_t end_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TensorProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TensorProto) */ {
 public:
  inline TensorProto() : TensorProto(nullptr) {}
  ~TensorProto() override;
  explicit constexpr TensorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TensorProto(const TensorProto& from);
  TensorProto(TensorProto&& from) noexcept
    : TensorProto() {
    *this = ::std::move(from);
  }

  inline TensorProto& operator=(const TensorProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline TensorProto& operator=(TensorProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TensorProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const TensorProto* internal_default_instance() {
    return reinterpret_cast<const TensorProto*>(
               &_TensorProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    9;

  friend void swap(TensorProto& a, TensorProto& b) {
    a.Swap(&b);
  }
  inline void Swap(TensorProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TensorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TensorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TensorProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TensorProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TensorProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TensorProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TensorProto";
  }
  protected:
  explicit TensorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef TensorProto_Segment Segment;

  typedef TensorProto_DataType DataType;
  static constexpr DataType UNDEFINED =
    TensorProto_DataType_UNDEFINED;
  static constexpr DataType FLOAT =
    TensorProto_DataType_FLOAT;
  static constexpr DataType UINT8 =
    TensorProto_DataType_UINT8;
  static constexpr DataType INT8 =
    TensorProto_DataType_INT8;
  static constexpr DataType UINT16 =
    TensorProto_DataType_UINT16;
  static constexpr DataType INT16 =
    TensorProto_DataType_INT16;
  static constexpr DataType INT32 =
    TensorProto_DataType_INT32;
  static constexpr DataType INT64 =
    TensorProto_DataType_INT64;
  static constexpr DataType STRING =
    TensorProto_DataType_STRING;
  static constexpr DataType BOOL =
    TensorProto_DataType_BOOL;
  static constexpr DataType FLOAT16 =
    TensorProto_DataType_FLOAT16;
  static constexpr DataType DOUBLE =
    TensorProto_DataType_DOUBLE;
  static constexpr DataType UINT32 =
    TensorProto_DataType_UINT32;
  static constexpr DataType UINT64 =
    TensorProto_DataType_UINT64;
  static constexpr DataType COMPLEX64 =
    TensorProto_DataType_COMPLEX64;
  static constexpr DataType COMPLEX128 =
    TensorProto_DataType_COMPLEX128;
  static constexpr DataType BFLOAT16 =
    TensorProto_DataType_BFLOAT16;
  static inline bool DataType_IsValid(int value) {
    return TensorProto_DataType_IsValid(value);
  }
  static constexpr DataType DataType_MIN =
    TensorProto_DataType_DataType_MIN;
  static constexpr DataType DataType_MAX =
    TensorProto_DataType_DataType_MAX;
  static constexpr int DataType_ARRAYSIZE =
    TensorProto_DataType_DataType_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  DataType_descriptor() {
    return TensorProto_DataType_descriptor();
  }
  template<typename T>
  static inline const std::string& DataType_Name(T enum_t_value) {
    static_assert(::std::is_same<T, DataType>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function DataType_Name.");
    return TensorProto_DataType_Name(enum_t_value);
  }
  static inline bool DataType_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      DataType* value) {
    return TensorProto_DataType_Parse(name, value);
  }

  typedef TensorProto_DataLocation DataLocation;
  static constexpr DataLocation DEFAULT =
    TensorProto_DataLocation_DEFAULT;
  static constexpr DataLocation EXTERNAL =
    TensorProto_DataLocation_EXTERNAL;
  static inline bool DataLocation_IsValid(int value) {
    return TensorProto_DataLocation_IsValid(value);
  }
  static constexpr DataLocation DataLocation_MIN =
    TensorProto_DataLocation_DataLocation_MIN;
  static constexpr DataLocation DataLocation_MAX =
    TensorProto_DataLocation_DataLocation_MAX;
  static constexpr int DataLocation_ARRAYSIZE =
    TensorProto_DataLocation_DataLocation_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  DataLocation_descriptor() {
    return TensorProto_DataLocation_descriptor();
  }
  template<typename T>
  static inline const std::string& DataLocation_Name(T enum_t_value) {
    static_assert(::std::is_same<T, DataLocation>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function DataLocation_Name.");
    return TensorProto_DataLocation_Name(enum_t_value);
  }
  static inline bool DataLocation_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      DataLocation* value) {
    return TensorProto_DataLocation_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  enum : int {
    kDimsFieldNumber = 1,
    kFloatDataFieldNumber = 4,
    kInt32DataFieldNumber = 5,
    kStringDataFieldNumber = 6,
    kInt64DataFieldNumber = 7,
    kDoubleDataFieldNumber = 10,
    kUint64DataFieldNumber = 11,
    kExternalDataFieldNumber = 13,
    kNameFieldNumber = 8,
    kRawDataFieldNumber = 9,
    kDocStringFieldNumber = 12,
    kSegmentFieldNumber = 3,
    kDataTypeFieldNumber = 2,
    kDataLocationFieldNumber = 14,
  };
  // repeated int64 dims = 1;
  int dims_size() const;
  private:
  int _internal_dims_size() const;
  public:
  void clear_dims();
  private:
  int64_t _internal_dims(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
      _internal_dims() const;
  void _internal_add_dims(int64_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
      _internal_mutable_dims();
  public:
  int64_t dims(int index) const;
  void set_dims(int index, int64_t value);
  void add_dims(int64_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
      dims() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
      mutable_dims();

  // repeated float float_data = 4 [packed = true];
  int float_data_size() const;
  private:
  int _internal_float_data_size() const;
  public:
  void clear_float_data();
  private:
  float _internal_float_data(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
      _internal_float_data() const;
  void _internal_add_float_data(float value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
      _internal_mutable_float_data();
  public:
  float float_data(int index) const;
  void set_float_data(int index, float value);
  void add_float_data(float value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
      float_data() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
      mutable_float_data();

  // repeated int32 int32_data = 5 [packed = true];
  int int32_data_size() const;
  private:
  int _internal_int32_data_size() const;
  public:
  void clear_int32_data();
  private:
  int32_t _internal_int32_data(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
      _internal_int32_data() const;
  void _internal_add_int32_data(int32_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
      _internal_mutable_int32_data();
  public:
  int32_t int32_data(int index) const;
  void set_int32_data(int index, int32_t value);
  void add_int32_data(int32_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
      int32_data() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
      mutable_int32_data();

  // repeated bytes string_data = 6;
  int string_data_size() const;
  private:
  int _internal_string_data_size() const;
  public:
  void clear_string_data();
  const std::string& string_data(int index) const;
  std::string* mutable_string_data(int index);
  void set_string_data(int index, const std::string& value);
  void set_string_data(int index, std::string&& value);
  void set_string_data(int index, const char* value);
  void set_string_data(int index, const void* value, size_t size);
  std::string* add_string_data();
  void add_string_data(const std::string& value);
  void add_string_data(std::string&& value);
  void add_string_data(const char* value);
  void add_string_data(const void* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& string_data() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_string_data();
  private:
  const std::string& _internal_string_data(int index) const;
  std::string* _internal_add_string_data();
  public:

  // repeated int64 int64_data = 7 [packed = true];
  int int64_data_size() const;
  private:
  int _internal_int64_data_size() const;
  public:
  void clear_int64_data();
  private:
  int64_t _internal_int64_data(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
      _internal_int64_data() const;
  void _internal_add_int64_data(int64_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
      _internal_mutable_int64_data();
  public:
  int64_t int64_data(int index) const;
  void set_int64_data(int index, int64_t value);
  void add_int64_data(int64_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
      int64_data() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
      mutable_int64_data();

  // repeated double double_data = 10 [packed = true];
  int double_data_size() const;
  private:
  int _internal_double_data_size() const;
  public:
  void clear_double_data();
  private:
  double _internal_double_data(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
      _internal_double_data() const;
  void _internal_add_double_data(double value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
      _internal_mutable_double_data();
  public:
  double double_data(int index) const;
  void set_double_data(int index, double value);
  void add_double_data(double value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
      double_data() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
      mutable_double_data();

  // repeated uint64 uint64_data = 11 [packed = true];
  int uint64_data_size() const;
  private:
  int _internal_uint64_data_size() const;
  public:
  void clear_uint64_data();
  private:
  uint64_t _internal_uint64_data(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >&
      _internal_uint64_data() const;
  void _internal_add_uint64_data(uint64_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >*
      _internal_mutable_uint64_data();
  public:
  uint64_t uint64_data(int index) const;
  void set_uint64_data(int index, uint64_t value);
  void add_uint64_data(uint64_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >&
      uint64_data() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >*
      mutable_uint64_data();

  // repeated .onnx.StringStringEntryProto external_data = 13;
  int external_data_size() const;
  private:
  int _internal_external_data_size() const;
  public:
  void clear_external_data();
  ::onnx::StringStringEntryProto* mutable_external_data(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
      mutable_external_data();
  private:
  const ::onnx::StringStringEntryProto& _internal_external_data(int index) const;
  ::onnx::StringStringEntryProto* _internal_add_external_data();
  public:
  const ::onnx::StringStringEntryProto& external_data(int index) const;
  ::onnx::StringStringEntryProto* add_external_data();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
      external_data() const;

  // string name = 8;
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // bytes raw_data = 9;
  void clear_raw_data();
  const std::string& raw_data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_raw_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_raw_data();
  PROTOBUF_NODISCARD std::string* release_raw_data();
  void set_allocated_raw_data(std::string* raw_data);
  private:
  const std::string& _internal_raw_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_raw_data(const std::string& value);
  std::string* _internal_mutable_raw_data();
  public:

  // string doc_string = 12;
  void clear_doc_string();
  const std::string& doc_string() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_doc_string(ArgT0&& arg0, ArgT... args);
  std::string* mutable_doc_string();
  PROTOBUF_NODISCARD std::string* release_doc_string();
  void set_allocated_doc_string(std::string* doc_string);
  private:
  const std::string& _internal_doc_string() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_doc_string(const std::string& value);
  std::string* _internal_mutable_doc_string();
  public:

  // .onnx.TensorProto.Segment segment = 3;
  bool has_segment() const;
  private:
  bool _internal_has_segment() const;
  public:
  void clear_segment();
  const ::onnx::TensorProto_Segment& segment() const;
  PROTOBUF_NODISCARD ::onnx::TensorProto_Segment* release_segment();
  ::onnx::TensorProto_Segment* mutable_segment();
  void set_allocated_segment(::onnx::TensorProto_Segment* segment);
  private:
  const ::onnx::TensorProto_Segment& _internal_segment() const;
  ::onnx::TensorProto_Segment* _internal_mutable_segment();
  public:
  void unsafe_arena_set_allocated_segment(
      ::onnx::TensorProto_Segment* segment);
  ::onnx::TensorProto_Segment* unsafe_arena_release_segment();

  // int32 data_type = 2;
  void clear_data_type();
  int32_t data_type() const;
  void set_data_type(int32_t value);
  private:
  int32_t _internal_data_type() const;
  void _internal_set_data_type(int32_t value);
  public:

  // .onnx.TensorProto.DataLocation data_location = 14;
  void clear_data_location();
  ::onnx::TensorProto_DataLocation data_location() const;
  void set_data_location(::onnx::TensorProto_DataLocation value);
  private:
  ::onnx::TensorProto_DataLocation _internal_data_location() const;
  void _internal_set_data_location(::onnx::TensorProto_DataLocation value);
  public:

  // @@protoc_insertion_point(class_scope:onnx.TensorProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t > dims_;
  mutable std::atomic<int> _dims_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< float > float_data_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t > int32_data_;
  mutable std::atomic<int> _int32_data_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> string_data_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t > int64_data_;
  mutable std::atomic<int> _int64_data_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double > double_data_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t > uint64_data_;
  mutable std::atomic<int> _uint64_data_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto > external_data_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr raw_data_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr doc_string_;
  ::onnx::TensorProto_Segment* segment_;
  int32_t data_type_;
  int data_location_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class SparseTensorProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.SparseTensorProto) */ {
 public:
  inline SparseTensorProto() : SparseTensorProto(nullptr) {}
  ~SparseTensorProto() override;
  explicit constexpr SparseTensorProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  SparseTensorProto(const SparseTensorProto& from);
  SparseTensorProto(SparseTensorProto&& from) noexcept
    : SparseTensorProto() {
    *this = ::std::move(from);
  }

  inline SparseTensorProto& operator=(const SparseTensorProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline SparseTensorProto& operator=(SparseTensorProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SparseTensorProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const SparseTensorProto* internal_default_instance() {
    return reinterpret_cast<const SparseTensorProto*>(
               &_SparseTensorProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    10;

  friend void swap(SparseTensorProto& a, SparseTensorProto& b) {
    a.Swap(&b);
  }
  inline void Swap(SparseTensorProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SparseTensorProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  SparseTensorProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<SparseTensorProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const SparseTensorProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const SparseTensorProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SparseTensorProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.SparseTensorProto";
  }
  protected:
  explicit SparseTensorProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDimsFieldNumber = 3,
    kValuesFieldNumber = 1,
    kIndicesFieldNumber = 2,
  };
  // repeated int64 dims = 3;
  int dims_size() const;
  private:
  int _internal_dims_size() const;
  public:
  void clear_dims();
  private:
  int64_t _internal_dims(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
      _internal_dims() const;
  void _internal_add_dims(int64_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
      _internal_mutable_dims();
  public:
  int64_t dims(int index) const;
  void set_dims(int index, int64_t value);
  void add_dims(int64_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
      dims() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
      mutable_dims();

  // .onnx.TensorProto values = 1;
  bool has_values() const;
  private:
  bool _internal_has_values() const;
  public:
  void clear_values();
  const ::onnx::TensorProto& values() const;
  PROTOBUF_NODISCARD ::onnx::TensorProto* release_values();
  ::onnx::TensorProto* mutable_values();
  void set_allocated_values(::onnx::TensorProto* values);
  private:
  const ::onnx::TensorProto& _internal_values() const;
  ::onnx::TensorProto* _internal_mutable_values();
  public:
  void unsafe_arena_set_allocated_values(
      ::onnx::TensorProto* values);
  ::onnx::TensorProto* unsafe_arena_release_values();

  // .onnx.TensorProto indices = 2;
  bool has_indices() const;
  private:
  bool _internal_has_indices() const;
  public:
  void clear_indices();
  const ::onnx::TensorProto& indices() const;
  PROTOBUF_NODISCARD ::onnx::TensorProto* release_indices();
  ::onnx::TensorProto* mutable_indices();
  void set_allocated_indices(::onnx::TensorProto* indices);
  private:
  const ::onnx::TensorProto& _internal_indices() const;
  ::onnx::TensorProto* _internal_mutable_indices();
  public:
  void unsafe_arena_set_allocated_indices(
      ::onnx::TensorProto* indices);
  ::onnx::TensorProto* unsafe_arena_release_indices();

  // @@protoc_insertion_point(class_scope:onnx.SparseTensorProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t > dims_;
  mutable std::atomic<int> _dims_cached_byte_size_;
  ::onnx::TensorProto* values_;
  ::onnx::TensorProto* indices_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TensorShapeProto_Dimension final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TensorShapeProto.Dimension) */ {
 public:
  inline TensorShapeProto_Dimension() : TensorShapeProto_Dimension(nullptr) {}
  ~TensorShapeProto_Dimension() override;
  explicit constexpr TensorShapeProto_Dimension(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TensorShapeProto_Dimension(const TensorShapeProto_Dimension& from);
  TensorShapeProto_Dimension(TensorShapeProto_Dimension&& from) noexcept
    : TensorShapeProto_Dimension() {
    *this = ::std::move(from);
  }

  inline TensorShapeProto_Dimension& operator=(const TensorShapeProto_Dimension& from) {
    CopyFrom(from);
    return *this;
  }
  inline TensorShapeProto_Dimension& operator=(TensorShapeProto_Dimension&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TensorShapeProto_Dimension& default_instance() {
    return *internal_default_instance();
  }
  enum ValueCase {
    kDimValue = 1,
    kDimParam = 2,
    VALUE_NOT_SET = 0,
  };

  static inline const TensorShapeProto_Dimension* internal_default_instance() {
    return reinterpret_cast<const TensorShapeProto_Dimension*>(
               &_TensorShapeProto_Dimension_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    11;

  friend void swap(TensorShapeProto_Dimension& a, TensorShapeProto_Dimension& b) {
    a.Swap(&b);
  }
  inline void Swap(TensorShapeProto_Dimension* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TensorShapeProto_Dimension* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TensorShapeProto_Dimension* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TensorShapeProto_Dimension>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TensorShapeProto_Dimension& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TensorShapeProto_Dimension& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TensorShapeProto_Dimension* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TensorShapeProto.Dimension";
  }
  protected:
  explicit TensorShapeProto_Dimension(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDenotationFieldNumber = 3,
    kDimValueFieldNumber = 1,
    kDimParamFieldNumber = 2,
  };
  // string denotation = 3;
  void clear_denotation();
  const std::string& denotation() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_denotation(ArgT0&& arg0, ArgT... args);
  std::string* mutable_denotation();
  PROTOBUF_NODISCARD std::string* release_denotation();
  void set_allocated_denotation(std::string* denotation);
  private:
  const std::string& _internal_denotation() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_denotation(const std::string& value);
  std::string* _internal_mutable_denotation();
  public:

  // int64 dim_value = 1;
  bool has_dim_value() const;
  private:
  bool _internal_has_dim_value() const;
  public:
  void clear_dim_value();
  int64_t dim_value() const;
  void set_dim_value(int64_t value);
  private:
  int64_t _internal_dim_value() const;
  void _internal_set_dim_value(int64_t value);
  public:

  // string dim_param = 2;
  bool has_dim_param() const;
  private:
  bool _internal_has_dim_param() const;
  public:
  void clear_dim_param();
  const std::string& dim_param() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_dim_param(ArgT0&& arg0, ArgT... args);
  std::string* mutable_dim_param();
  PROTOBUF_NODISCARD std::string* release_dim_param();
  void set_allocated_dim_param(std::string* dim_param);
  private:
  const std::string& _internal_dim_param() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_dim_param(const std::string& value);
  std::string* _internal_mutable_dim_param();
  public:

  void clear_value();
  ValueCase value_case() const;
  // @@protoc_insertion_point(class_scope:onnx.TensorShapeProto.Dimension)
 private:
  class _Internal;
  void set_has_dim_value();
  void set_has_dim_param();

  inline bool has_value() const;
  inline void clear_has_value();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr denotation_;
  union ValueUnion {
    constexpr ValueUnion() : _constinit_{} {}
      ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
    int64_t dim_value_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dim_param_;
  } value_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  uint32_t _oneof_case_[1];

  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TensorShapeProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TensorShapeProto) */ {
 public:
  inline TensorShapeProto() : TensorShapeProto(nullptr) {}
  ~TensorShapeProto() override;
  explicit constexpr TensorShapeProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TensorShapeProto(const TensorShapeProto& from);
  TensorShapeProto(TensorShapeProto&& from) noexcept
    : TensorShapeProto() {
    *this = ::std::move(from);
  }

  inline TensorShapeProto& operator=(const TensorShapeProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline TensorShapeProto& operator=(TensorShapeProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TensorShapeProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const TensorShapeProto* internal_default_instance() {
    return reinterpret_cast<const TensorShapeProto*>(
               &_TensorShapeProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    12;

  friend void swap(TensorShapeProto& a, TensorShapeProto& b) {
    a.Swap(&b);
  }
  inline void Swap(TensorShapeProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TensorShapeProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TensorShapeProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TensorShapeProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TensorShapeProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TensorShapeProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TensorShapeProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TensorShapeProto";
  }
  protected:
  explicit TensorShapeProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef TensorShapeProto_Dimension Dimension;

  // accessors -------------------------------------------------------

  enum : int {
    kDimFieldNumber = 1,
  };
  // repeated .onnx.TensorShapeProto.Dimension dim = 1;
  int dim_size() const;
  private:
  int _internal_dim_size() const;
  public:
  void clear_dim();
  ::onnx::TensorShapeProto_Dimension* mutable_dim(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorShapeProto_Dimension >*
      mutable_dim();
  private:
  const ::onnx::TensorShapeProto_Dimension& _internal_dim(int index) const;
  ::onnx::TensorShapeProto_Dimension* _internal_add_dim();
  public:
  const ::onnx::TensorShapeProto_Dimension& dim(int index) const;
  ::onnx::TensorShapeProto_Dimension* add_dim();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorShapeProto_Dimension >&
      dim() const;

  // @@protoc_insertion_point(class_scope:onnx.TensorShapeProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorShapeProto_Dimension > dim_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TypeProto_Tensor final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TypeProto.Tensor) */ {
 public:
  inline TypeProto_Tensor() : TypeProto_Tensor(nullptr) {}
  ~TypeProto_Tensor() override;
  explicit constexpr TypeProto_Tensor(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TypeProto_Tensor(const TypeProto_Tensor& from);
  TypeProto_Tensor(TypeProto_Tensor&& from) noexcept
    : TypeProto_Tensor() {
    *this = ::std::move(from);
  }

  inline TypeProto_Tensor& operator=(const TypeProto_Tensor& from) {
    CopyFrom(from);
    return *this;
  }
  inline TypeProto_Tensor& operator=(TypeProto_Tensor&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TypeProto_Tensor& default_instance() {
    return *internal_default_instance();
  }
  static inline const TypeProto_Tensor* internal_default_instance() {
    return reinterpret_cast<const TypeProto_Tensor*>(
               &_TypeProto_Tensor_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    13;

  friend void swap(TypeProto_Tensor& a, TypeProto_Tensor& b) {
    a.Swap(&b);
  }
  inline void Swap(TypeProto_Tensor* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TypeProto_Tensor* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TypeProto_Tensor* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TypeProto_Tensor>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TypeProto_Tensor& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TypeProto_Tensor& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TypeProto_Tensor* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TypeProto.Tensor";
  }
  protected:
  explicit TypeProto_Tensor(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kShapeFieldNumber = 2,
    kElemTypeFieldNumber = 1,
  };
  // .onnx.TensorShapeProto shape = 2;
  bool has_shape() const;
  private:
  bool _internal_has_shape() const;
  public:
  void clear_shape();
  const ::onnx::TensorShapeProto& shape() const;
  PROTOBUF_NODISCARD ::onnx::TensorShapeProto* release_shape();
  ::onnx::TensorShapeProto* mutable_shape();
  void set_allocated_shape(::onnx::TensorShapeProto* shape);
  private:
  const ::onnx::TensorShapeProto& _internal_shape() const;
  ::onnx::TensorShapeProto* _internal_mutable_shape();
  public:
  void unsafe_arena_set_allocated_shape(
      ::onnx::TensorShapeProto* shape);
  ::onnx::TensorShapeProto* unsafe_arena_release_shape();

  // int32 elem_type = 1;
  void clear_elem_type();
  int32_t elem_type() const;
  void set_elem_type(int32_t value);
  private:
  int32_t _internal_elem_type() const;
  void _internal_set_elem_type(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:onnx.TypeProto.Tensor)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::onnx::TensorShapeProto* shape_;
  int32_t elem_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TypeProto_Sequence final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TypeProto.Sequence) */ {
 public:
  inline TypeProto_Sequence() : TypeProto_Sequence(nullptr) {}
  ~TypeProto_Sequence() override;
  explicit constexpr TypeProto_Sequence(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TypeProto_Sequence(const TypeProto_Sequence& from);
  TypeProto_Sequence(TypeProto_Sequence&& from) noexcept
    : TypeProto_Sequence() {
    *this = ::std::move(from);
  }

  inline TypeProto_Sequence& operator=(const TypeProto_Sequence& from) {
    CopyFrom(from);
    return *this;
  }
  inline TypeProto_Sequence& operator=(TypeProto_Sequence&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TypeProto_Sequence& default_instance() {
    return *internal_default_instance();
  }
  static inline const TypeProto_Sequence* internal_default_instance() {
    return reinterpret_cast<const TypeProto_Sequence*>(
               &_TypeProto_Sequence_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    14;

  friend void swap(TypeProto_Sequence& a, TypeProto_Sequence& b) {
    a.Swap(&b);
  }
  inline void Swap(TypeProto_Sequence* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TypeProto_Sequence* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TypeProto_Sequence* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TypeProto_Sequence>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TypeProto_Sequence& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TypeProto_Sequence& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TypeProto_Sequence* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TypeProto.Sequence";
  }
  protected:
  explicit TypeProto_Sequence(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kElemTypeFieldNumber = 1,
  };
  // .onnx.TypeProto elem_type = 1;
  bool has_elem_type() const;
  private:
  bool _internal_has_elem_type() const;
  public:
  void clear_elem_type();
  const ::onnx::TypeProto& elem_type() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto* release_elem_type();
  ::onnx::TypeProto* mutable_elem_type();
  void set_allocated_elem_type(::onnx::TypeProto* elem_type);
  private:
  const ::onnx::TypeProto& _internal_elem_type() const;
  ::onnx::TypeProto* _internal_mutable_elem_type();
  public:
  void unsafe_arena_set_allocated_elem_type(
      ::onnx::TypeProto* elem_type);
  ::onnx::TypeProto* unsafe_arena_release_elem_type();

  // @@protoc_insertion_point(class_scope:onnx.TypeProto.Sequence)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::onnx::TypeProto* elem_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TypeProto_Map final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TypeProto.Map) */ {
 public:
  inline TypeProto_Map() : TypeProto_Map(nullptr) {}
  ~TypeProto_Map() override;
  explicit constexpr TypeProto_Map(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TypeProto_Map(const TypeProto_Map& from);
  TypeProto_Map(TypeProto_Map&& from) noexcept
    : TypeProto_Map() {
    *this = ::std::move(from);
  }

  inline TypeProto_Map& operator=(const TypeProto_Map& from) {
    CopyFrom(from);
    return *this;
  }
  inline TypeProto_Map& operator=(TypeProto_Map&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TypeProto_Map& default_instance() {
    return *internal_default_instance();
  }
  static inline const TypeProto_Map* internal_default_instance() {
    return reinterpret_cast<const TypeProto_Map*>(
               &_TypeProto_Map_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    15;

  friend void swap(TypeProto_Map& a, TypeProto_Map& b) {
    a.Swap(&b);
  }
  inline void Swap(TypeProto_Map* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TypeProto_Map* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TypeProto_Map* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TypeProto_Map>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TypeProto_Map& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TypeProto_Map& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TypeProto_Map* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TypeProto.Map";
  }
  protected:
  explicit TypeProto_Map(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kValueTypeFieldNumber = 2,
    kKeyTypeFieldNumber = 1,
  };
  // .onnx.TypeProto value_type = 2;
  bool has_value_type() const;
  private:
  bool _internal_has_value_type() const;
  public:
  void clear_value_type();
  const ::onnx::TypeProto& value_type() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto* release_value_type();
  ::onnx::TypeProto* mutable_value_type();
  void set_allocated_value_type(::onnx::TypeProto* value_type);
  private:
  const ::onnx::TypeProto& _internal_value_type() const;
  ::onnx::TypeProto* _internal_mutable_value_type();
  public:
  void unsafe_arena_set_allocated_value_type(
      ::onnx::TypeProto* value_type);
  ::onnx::TypeProto* unsafe_arena_release_value_type();

  // int32 key_type = 1;
  void clear_key_type();
  int32_t key_type() const;
  void set_key_type(int32_t value);
  private:
  int32_t _internal_key_type() const;
  void _internal_set_key_type(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:onnx.TypeProto.Map)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::onnx::TypeProto* value_type_;
  int32_t key_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TypeProto_Optional final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TypeProto.Optional) */ {
 public:
  inline TypeProto_Optional() : TypeProto_Optional(nullptr) {}
  ~TypeProto_Optional() override;
  explicit constexpr TypeProto_Optional(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TypeProto_Optional(const TypeProto_Optional& from);
  TypeProto_Optional(TypeProto_Optional&& from) noexcept
    : TypeProto_Optional() {
    *this = ::std::move(from);
  }

  inline TypeProto_Optional& operator=(const TypeProto_Optional& from) {
    CopyFrom(from);
    return *this;
  }
  inline TypeProto_Optional& operator=(TypeProto_Optional&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TypeProto_Optional& default_instance() {
    return *internal_default_instance();
  }
  static inline const TypeProto_Optional* internal_default_instance() {
    return reinterpret_cast<const TypeProto_Optional*>(
               &_TypeProto_Optional_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    16;

  friend void swap(TypeProto_Optional& a, TypeProto_Optional& b) {
    a.Swap(&b);
  }
  inline void Swap(TypeProto_Optional* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TypeProto_Optional* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TypeProto_Optional* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TypeProto_Optional>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TypeProto_Optional& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TypeProto_Optional& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TypeProto_Optional* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TypeProto.Optional";
  }
  protected:
  explicit TypeProto_Optional(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kElemTypeFieldNumber = 1,
  };
  // .onnx.TypeProto elem_type = 1;
  bool has_elem_type() const;
  private:
  bool _internal_has_elem_type() const;
  public:
  void clear_elem_type();
  const ::onnx::TypeProto& elem_type() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto* release_elem_type();
  ::onnx::TypeProto* mutable_elem_type();
  void set_allocated_elem_type(::onnx::TypeProto* elem_type);
  private:
  const ::onnx::TypeProto& _internal_elem_type() const;
  ::onnx::TypeProto* _internal_mutable_elem_type();
  public:
  void unsafe_arena_set_allocated_elem_type(
      ::onnx::TypeProto* elem_type);
  ::onnx::TypeProto* unsafe_arena_release_elem_type();

  // @@protoc_insertion_point(class_scope:onnx.TypeProto.Optional)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::onnx::TypeProto* elem_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TypeProto_SparseTensor final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TypeProto.SparseTensor) */ {
 public:
  inline TypeProto_SparseTensor() : TypeProto_SparseTensor(nullptr) {}
  ~TypeProto_SparseTensor() override;
  explicit constexpr TypeProto_SparseTensor(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TypeProto_SparseTensor(const TypeProto_SparseTensor& from);
  TypeProto_SparseTensor(TypeProto_SparseTensor&& from) noexcept
    : TypeProto_SparseTensor() {
    *this = ::std::move(from);
  }

  inline TypeProto_SparseTensor& operator=(const TypeProto_SparseTensor& from) {
    CopyFrom(from);
    return *this;
  }
  inline TypeProto_SparseTensor& operator=(TypeProto_SparseTensor&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TypeProto_SparseTensor& default_instance() {
    return *internal_default_instance();
  }
  static inline const TypeProto_SparseTensor* internal_default_instance() {
    return reinterpret_cast<const TypeProto_SparseTensor*>(
               &_TypeProto_SparseTensor_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    17;

  friend void swap(TypeProto_SparseTensor& a, TypeProto_SparseTensor& b) {
    a.Swap(&b);
  }
  inline void Swap(TypeProto_SparseTensor* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TypeProto_SparseTensor* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TypeProto_SparseTensor* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TypeProto_SparseTensor>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TypeProto_SparseTensor& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TypeProto_SparseTensor& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TypeProto_SparseTensor* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TypeProto.SparseTensor";
  }
  protected:
  explicit TypeProto_SparseTensor(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kShapeFieldNumber = 2,
    kElemTypeFieldNumber = 1,
  };
  // .onnx.TensorShapeProto shape = 2;
  bool has_shape() const;
  private:
  bool _internal_has_shape() const;
  public:
  void clear_shape();
  const ::onnx::TensorShapeProto& shape() const;
  PROTOBUF_NODISCARD ::onnx::TensorShapeProto* release_shape();
  ::onnx::TensorShapeProto* mutable_shape();
  void set_allocated_shape(::onnx::TensorShapeProto* shape);
  private:
  const ::onnx::TensorShapeProto& _internal_shape() const;
  ::onnx::TensorShapeProto* _internal_mutable_shape();
  public:
  void unsafe_arena_set_allocated_shape(
      ::onnx::TensorShapeProto* shape);
  ::onnx::TensorShapeProto* unsafe_arena_release_shape();

  // int32 elem_type = 1;
  void clear_elem_type();
  int32_t elem_type() const;
  void set_elem_type(int32_t value);
  private:
  int32_t _internal_elem_type() const;
  void _internal_set_elem_type(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:onnx.TypeProto.SparseTensor)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::onnx::TensorShapeProto* shape_;
  int32_t elem_type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class TypeProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.TypeProto) */ {
 public:
  inline TypeProto() : TypeProto(nullptr) {}
  ~TypeProto() override;
  explicit constexpr TypeProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  TypeProto(const TypeProto& from);
  TypeProto(TypeProto&& from) noexcept
    : TypeProto() {
    *this = ::std::move(from);
  }

  inline TypeProto& operator=(const TypeProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline TypeProto& operator=(TypeProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TypeProto& default_instance() {
    return *internal_default_instance();
  }
  enum ValueCase {
    kTensorType = 1,
    kSequenceType = 4,
    kMapType = 5,
    kOptionalType = 9,
    kSparseTensorType = 8,
    VALUE_NOT_SET = 0,
  };

  static inline const TypeProto* internal_default_instance() {
    return reinterpret_cast<const TypeProto*>(
               &_TypeProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    18;

  friend void swap(TypeProto& a, TypeProto& b) {
    a.Swap(&b);
  }
  inline void Swap(TypeProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TypeProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TypeProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<TypeProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const TypeProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const TypeProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(TypeProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.TypeProto";
  }
  protected:
  explicit TypeProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef TypeProto_Tensor Tensor;
  typedef TypeProto_Sequence Sequence;
  typedef TypeProto_Map Map;
  typedef TypeProto_Optional Optional;
  typedef TypeProto_SparseTensor SparseTensor;

  // accessors -------------------------------------------------------

  enum : int {
    kDenotationFieldNumber = 6,
    kTensorTypeFieldNumber = 1,
    kSequenceTypeFieldNumber = 4,
    kMapTypeFieldNumber = 5,
    kOptionalTypeFieldNumber = 9,
    kSparseTensorTypeFieldNumber = 8,
  };
  // string denotation = 6;
  void clear_denotation();
  const std::string& denotation() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_denotation(ArgT0&& arg0, ArgT... args);
  std::string* mutable_denotation();
  PROTOBUF_NODISCARD std::string* release_denotation();
  void set_allocated_denotation(std::string* denotation);
  private:
  const std::string& _internal_denotation() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_denotation(const std::string& value);
  std::string* _internal_mutable_denotation();
  public:

  // .onnx.TypeProto.Tensor tensor_type = 1;
  bool has_tensor_type() const;
  private:
  bool _internal_has_tensor_type() const;
  public:
  void clear_tensor_type();
  const ::onnx::TypeProto_Tensor& tensor_type() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto_Tensor* release_tensor_type();
  ::onnx::TypeProto_Tensor* mutable_tensor_type();
  void set_allocated_tensor_type(::onnx::TypeProto_Tensor* tensor_type);
  private:
  const ::onnx::TypeProto_Tensor& _internal_tensor_type() const;
  ::onnx::TypeProto_Tensor* _internal_mutable_tensor_type();
  public:
  void unsafe_arena_set_allocated_tensor_type(
      ::onnx::TypeProto_Tensor* tensor_type);
  ::onnx::TypeProto_Tensor* unsafe_arena_release_tensor_type();

  // .onnx.TypeProto.Sequence sequence_type = 4;
  bool has_sequence_type() const;
  private:
  bool _internal_has_sequence_type() const;
  public:
  void clear_sequence_type();
  const ::onnx::TypeProto_Sequence& sequence_type() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto_Sequence* release_sequence_type();
  ::onnx::TypeProto_Sequence* mutable_sequence_type();
  void set_allocated_sequence_type(::onnx::TypeProto_Sequence* sequence_type);
  private:
  const ::onnx::TypeProto_Sequence& _internal_sequence_type() const;
  ::onnx::TypeProto_Sequence* _internal_mutable_sequence_type();
  public:
  void unsafe_arena_set_allocated_sequence_type(
      ::onnx::TypeProto_Sequence* sequence_type);
  ::onnx::TypeProto_Sequence* unsafe_arena_release_sequence_type();

  // .onnx.TypeProto.Map map_type = 5;
  bool has_map_type() const;
  private:
  bool _internal_has_map_type() const;
  public:
  void clear_map_type();
  const ::onnx::TypeProto_Map& map_type() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto_Map* release_map_type();
  ::onnx::TypeProto_Map* mutable_map_type();
  void set_allocated_map_type(::onnx::TypeProto_Map* map_type);
  private:
  const ::onnx::TypeProto_Map& _internal_map_type() const;
  ::onnx::TypeProto_Map* _internal_mutable_map_type();
  public:
  void unsafe_arena_set_allocated_map_type(
      ::onnx::TypeProto_Map* map_type);
  ::onnx::TypeProto_Map* unsafe_arena_release_map_type();

  // .onnx.TypeProto.Optional optional_type = 9;
  bool has_optional_type() const;
  private:
  bool _internal_has_optional_type() const;
  public:
  void clear_optional_type();
  const ::onnx::TypeProto_Optional& optional_type() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto_Optional* release_optional_type();
  ::onnx::TypeProto_Optional* mutable_optional_type();
  void set_allocated_optional_type(::onnx::TypeProto_Optional* optional_type);
  private:
  const ::onnx::TypeProto_Optional& _internal_optional_type() const;
  ::onnx::TypeProto_Optional* _internal_mutable_optional_type();
  public:
  void unsafe_arena_set_allocated_optional_type(
      ::onnx::TypeProto_Optional* optional_type);
  ::onnx::TypeProto_Optional* unsafe_arena_release_optional_type();

  // .onnx.TypeProto.SparseTensor sparse_tensor_type = 8;
  bool has_sparse_tensor_type() const;
  private:
  bool _internal_has_sparse_tensor_type() const;
  public:
  void clear_sparse_tensor_type();
  const ::onnx::TypeProto_SparseTensor& sparse_tensor_type() const;
  PROTOBUF_NODISCARD ::onnx::TypeProto_SparseTensor* release_sparse_tensor_type();
  ::onnx::TypeProto_SparseTensor* mutable_sparse_tensor_type();
  void set_allocated_sparse_tensor_type(::onnx::TypeProto_SparseTensor* sparse_tensor_type);
  private:
  const ::onnx::TypeProto_SparseTensor& _internal_sparse_tensor_type() const;
  ::onnx::TypeProto_SparseTensor* _internal_mutable_sparse_tensor_type();
  public:
  void unsafe_arena_set_allocated_sparse_tensor_type(
      ::onnx::TypeProto_SparseTensor* sparse_tensor_type);
  ::onnx::TypeProto_SparseTensor* unsafe_arena_release_sparse_tensor_type();

  void clear_value();
  ValueCase value_case() const;
  // @@protoc_insertion_point(class_scope:onnx.TypeProto)
 private:
  class _Internal;
  void set_has_tensor_type();
  void set_has_sequence_type();
  void set_has_map_type();
  void set_has_optional_type();
  void set_has_sparse_tensor_type();

  inline bool has_value() const;
  inline void clear_has_value();

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr denotation_;
  union ValueUnion {
    constexpr ValueUnion() : _constinit_{} {}
      ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized _constinit_;
    ::onnx::TypeProto_Tensor* tensor_type_;
    ::onnx::TypeProto_Sequence* sequence_type_;
    ::onnx::TypeProto_Map* map_type_;
    ::onnx::TypeProto_Optional* optional_type_;
    ::onnx::TypeProto_SparseTensor* sparse_tensor_type_;
  } value_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  uint32_t _oneof_case_[1];

  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class OperatorSetIdProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.OperatorSetIdProto) */ {
 public:
  inline OperatorSetIdProto() : OperatorSetIdProto(nullptr) {}
  ~OperatorSetIdProto() override;
  explicit constexpr OperatorSetIdProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  OperatorSetIdProto(const OperatorSetIdProto& from);
  OperatorSetIdProto(OperatorSetIdProto&& from) noexcept
    : OperatorSetIdProto() {
    *this = ::std::move(from);
  }

  inline OperatorSetIdProto& operator=(const OperatorSetIdProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline OperatorSetIdProto& operator=(OperatorSetIdProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const OperatorSetIdProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const OperatorSetIdProto* internal_default_instance() {
    return reinterpret_cast<const OperatorSetIdProto*>(
               &_OperatorSetIdProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    19;

  friend void swap(OperatorSetIdProto& a, OperatorSetIdProto& b) {
    a.Swap(&b);
  }
  inline void Swap(OperatorSetIdProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OperatorSetIdProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  OperatorSetIdProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<OperatorSetIdProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const OperatorSetIdProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const OperatorSetIdProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(OperatorSetIdProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.OperatorSetIdProto";
  }
  protected:
  explicit OperatorSetIdProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDomainFieldNumber = 1,
    kVersionFieldNumber = 2,
  };
  // string domain = 1;
  void clear_domain();
  const std::string& domain() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_domain(ArgT0&& arg0, ArgT... args);
  std::string* mutable_domain();
  PROTOBUF_NODISCARD std::string* release_domain();
  void set_allocated_domain(std::string* domain);
  private:
  const std::string& _internal_domain() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_domain(const std::string& value);
  std::string* _internal_mutable_domain();
  public:

  // int64 version = 2;
  void clear_version();
  int64_t version() const;
  void set_version(int64_t value);
  private:
  int64_t _internal_version() const;
  void _internal_set_version(int64_t value);
  public:

  // @@protoc_insertion_point(class_scope:onnx.OperatorSetIdProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr domain_;
  int64_t version_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// -------------------------------------------------------------------

class FunctionProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:onnx.FunctionProto) */ {
 public:
  inline FunctionProto() : FunctionProto(nullptr) {}
  ~FunctionProto() override;
  explicit constexpr FunctionProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  FunctionProto(const FunctionProto& from);
  FunctionProto(FunctionProto&& from) noexcept
    : FunctionProto() {
    *this = ::std::move(from);
  }

  inline FunctionProto& operator=(const FunctionProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline FunctionProto& operator=(FunctionProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FunctionProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const FunctionProto* internal_default_instance() {
    return reinterpret_cast<const FunctionProto*>(
               &_FunctionProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    20;

  friend void swap(FunctionProto& a, FunctionProto& b) {
    a.Swap(&b);
  }
  inline void Swap(FunctionProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FunctionProto* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  FunctionProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<FunctionProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const FunctionProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom(const FunctionProto& from);
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to, const ::PROTOBUF_NAMESPACE_ID::Message& from);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(FunctionProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "onnx.FunctionProto";
  }
  protected:
  explicit FunctionProto(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kInputFieldNumber = 4,
    kOutputFieldNumber = 5,
    kAttributeFieldNumber = 6,
    kNodeFieldNumber = 7,
    kOpsetImportFieldNumber = 9,
    kNameFieldNumber = 1,
    kDocStringFieldNumber = 8,
    kDomainFieldNumber = 10,
  };
  // repeated string input = 4;
  int input_size() const;
  private:
  int _internal_input_size() const;
  public:
  void clear_input();
  const std::string& input(int index) const;
  std::string* mutable_input(int index);
  void set_input(int index, const std::string& value);
  void set_input(int index, std::string&& value);
  void set_input(int index, const char* value);
  void set_input(int index, const char* value, size_t size);
  std::string* add_input();
  void add_input(const std::string& value);
  void add_input(std::string&& value);
  void add_input(const char* value);
  void add_input(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& input() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_input();
  private:
  const std::string& _internal_input(int index) const;
  std::string* _internal_add_input();
  public:

  // repeated string output = 5;
  int output_size() const;
  private:
  int _internal_output_size() const;
  public:
  void clear_output();
  const std::string& output(int index) const;
  std::string* mutable_output(int index);
  void set_output(int index, const std::string& value);
  void set_output(int index, std::string&& value);
  void set_output(int index, const char* value);
  void set_output(int index, const char* value, size_t size);
  std::string* add_output();
  void add_output(const std::string& value);
  void add_output(std::string&& value);
  void add_output(const char* value);
  void add_output(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& output() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_output();
  private:
  const std::string& _internal_output(int index) const;
  std::string* _internal_add_output();
  public:

  // repeated string attribute = 6;
  int attribute_size() const;
  private:
  int _internal_attribute_size() const;
  public:
  void clear_attribute();
  const std::string& attribute(int index) const;
  std::string* mutable_attribute(int index);
  void set_attribute(int index, const std::string& value);
  void set_attribute(int index, std::string&& value);
  void set_attribute(int index, const char* value);
  void set_attribute(int index, const char* value, size_t size);
  std::string* add_attribute();
  void add_attribute(const std::string& value);
  void add_attribute(std::string&& value);
  void add_attribute(const char* value);
  void add_attribute(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& attribute() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_attribute();
  private:
  const std::string& _internal_attribute(int index) const;
  std::string* _internal_add_attribute();
  public:

  // repeated .onnx.NodeProto node = 7;
  int node_size() const;
  private:
  int _internal_node_size() const;
  public:
  void clear_node();
  ::onnx::NodeProto* mutable_node(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto >*
      mutable_node();
  private:
  const ::onnx::NodeProto& _internal_node(int index) const;
  ::onnx::NodeProto* _internal_add_node();
  public:
  const ::onnx::NodeProto& node(int index) const;
  ::onnx::NodeProto* add_node();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto >&
      node() const;

  // repeated .onnx.OperatorSetIdProto opset_import = 9;
  int opset_import_size() const;
  private:
  int _internal_opset_import_size() const;
  public:
  void clear_opset_import();
  ::onnx::OperatorSetIdProto* mutable_opset_import(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto >*
      mutable_opset_import();
  private:
  const ::onnx::OperatorSetIdProto& _internal_opset_import(int index) const;
  ::onnx::OperatorSetIdProto* _internal_add_opset_import();
  public:
  const ::onnx::OperatorSetIdProto& opset_import(int index) const;
  ::onnx::OperatorSetIdProto* add_opset_import();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto >&
      opset_import() const;

  // string name = 1;
  void clear_name();
  const std::string& name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* name);
  private:
  const std::string& _internal_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // string doc_string = 8;
  void clear_doc_string();
  const std::string& doc_string() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_doc_string(ArgT0&& arg0, ArgT... args);
  std::string* mutable_doc_string();
  PROTOBUF_NODISCARD std::string* release_doc_string();
  void set_allocated_doc_string(std::string* doc_string);
  private:
  const std::string& _internal_doc_string() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_doc_string(const std::string& value);
  std::string* _internal_mutable_doc_string();
  public:

  // string domain = 10;
  void clear_domain();
  const std::string& domain() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_domain(ArgT0&& arg0, ArgT... args);
  std::string* mutable_domain();
  PROTOBUF_NODISCARD std::string* release_domain();
  void set_allocated_domain(std::string* domain);
  private:
  const std::string& _internal_domain() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_domain(const std::string& value);
  std::string* _internal_mutable_domain();
  public:

  // @@protoc_insertion_point(class_scope:onnx.FunctionProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> input_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> output_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> attribute_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto > node_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto > opset_import_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr doc_string_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr domain_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_onnx_2eproto;
};
// ===================================================================


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

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// AttributeProto

// string name = 1;
inline void AttributeProto::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& AttributeProto::name() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void AttributeProto::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.name)
}
inline std::string* AttributeProto::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.name)
  return _s;
}
inline const std::string& AttributeProto::_internal_name() const {
  return name_.Get();
}
inline void AttributeProto::_internal_set_name(const std::string& value) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* AttributeProto::_internal_mutable_name() {
  
  return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* AttributeProto::release_name() {
  // @@protoc_insertion_point(field_release:onnx.AttributeProto.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void AttributeProto::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.AttributeProto.name)
}

// string ref_attr_name = 21;
inline void AttributeProto::clear_ref_attr_name() {
  ref_attr_name_.ClearToEmpty();
}
inline const std::string& AttributeProto::ref_attr_name() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.ref_attr_name)
  return _internal_ref_attr_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void AttributeProto::set_ref_attr_name(ArgT0&& arg0, ArgT... args) {
 
 ref_attr_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.ref_attr_name)
}
inline std::string* AttributeProto::mutable_ref_attr_name() {
  std::string* _s = _internal_mutable_ref_attr_name();
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.ref_attr_name)
  return _s;
}
inline const std::string& AttributeProto::_internal_ref_attr_name() const {
  return ref_attr_name_.Get();
}
inline void AttributeProto::_internal_set_ref_attr_name(const std::string& value) {
  
  ref_attr_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* AttributeProto::_internal_mutable_ref_attr_name() {
  
  return ref_attr_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* AttributeProto::release_ref_attr_name() {
  // @@protoc_insertion_point(field_release:onnx.AttributeProto.ref_attr_name)
  return ref_attr_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void AttributeProto::set_allocated_ref_attr_name(std::string* ref_attr_name) {
  if (ref_attr_name != nullptr) {
    
  } else {
    
  }
  ref_attr_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ref_attr_name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (ref_attr_name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    ref_attr_name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.AttributeProto.ref_attr_name)
}

// string doc_string = 13;
inline void AttributeProto::clear_doc_string() {
  doc_string_.ClearToEmpty();
}
inline const std::string& AttributeProto::doc_string() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.doc_string)
  return _internal_doc_string();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void AttributeProto::set_doc_string(ArgT0&& arg0, ArgT... args) {
 
 doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.doc_string)
}
inline std::string* AttributeProto::mutable_doc_string() {
  std::string* _s = _internal_mutable_doc_string();
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.doc_string)
  return _s;
}
inline const std::string& AttributeProto::_internal_doc_string() const {
  return doc_string_.Get();
}
inline void AttributeProto::_internal_set_doc_string(const std::string& value) {
  
  doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* AttributeProto::_internal_mutable_doc_string() {
  
  return doc_string_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* AttributeProto::release_doc_string() {
  // @@protoc_insertion_point(field_release:onnx.AttributeProto.doc_string)
  return doc_string_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void AttributeProto::set_allocated_doc_string(std::string* doc_string) {
  if (doc_string != nullptr) {
    
  } else {
    
  }
  doc_string_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), doc_string,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (doc_string_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    doc_string_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.AttributeProto.doc_string)
}

// .onnx.AttributeProto.AttributeType type = 20;
inline void AttributeProto::clear_type() {
  type_ = 0;
}
inline ::onnx::AttributeProto_AttributeType AttributeProto::_internal_type() const {
  return static_cast< ::onnx::AttributeProto_AttributeType >(type_);
}
inline ::onnx::AttributeProto_AttributeType AttributeProto::type() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.type)
  return _internal_type();
}
inline void AttributeProto::_internal_set_type(::onnx::AttributeProto_AttributeType value) {
  
  type_ = value;
}
inline void AttributeProto::set_type(::onnx::AttributeProto_AttributeType value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.type)
}

// float f = 2;
inline void AttributeProto::clear_f() {
  f_ = 0;
}
inline float AttributeProto::_internal_f() const {
  return f_;
}
inline float AttributeProto::f() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.f)
  return _internal_f();
}
inline void AttributeProto::_internal_set_f(float value) {
  
  f_ = value;
}
inline void AttributeProto::set_f(float value) {
  _internal_set_f(value);
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.f)
}

// int64 i = 3;
inline void AttributeProto::clear_i() {
  i_ = int64_t{0};
}
inline int64_t AttributeProto::_internal_i() const {
  return i_;
}
inline int64_t AttributeProto::i() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.i)
  return _internal_i();
}
inline void AttributeProto::_internal_set_i(int64_t value) {
  
  i_ = value;
}
inline void AttributeProto::set_i(int64_t value) {
  _internal_set_i(value);
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.i)
}

// bytes s = 4;
inline void AttributeProto::clear_s() {
  s_.ClearToEmpty();
}
inline const std::string& AttributeProto::s() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.s)
  return _internal_s();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void AttributeProto::set_s(ArgT0&& arg0, ArgT... args) {
 
 s_.SetBytes(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.s)
}
inline std::string* AttributeProto::mutable_s() {
  std::string* _s = _internal_mutable_s();
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.s)
  return _s;
}
inline const std::string& AttributeProto::_internal_s() const {
  return s_.Get();
}
inline void AttributeProto::_internal_set_s(const std::string& value) {
  
  s_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* AttributeProto::_internal_mutable_s() {
  
  return s_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* AttributeProto::release_s() {
  // @@protoc_insertion_point(field_release:onnx.AttributeProto.s)
  return s_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void AttributeProto::set_allocated_s(std::string* s) {
  if (s != nullptr) {
    
  } else {
    
  }
  s_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), s,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (s_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    s_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.AttributeProto.s)
}

// .onnx.TensorProto t = 5;
inline bool AttributeProto::_internal_has_t() const {
  return this != internal_default_instance() && t_ != nullptr;
}
inline bool AttributeProto::has_t() const {
  return _internal_has_t();
}
inline void AttributeProto::clear_t() {
  if (GetArenaForAllocation() == nullptr && t_ != nullptr) {
    delete t_;
  }
  t_ = nullptr;
}
inline const ::onnx::TensorProto& AttributeProto::_internal_t() const {
  const ::onnx::TensorProto* p = t_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TensorProto&>(
      ::onnx::_TensorProto_default_instance_);
}
inline const ::onnx::TensorProto& AttributeProto::t() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.t)
  return _internal_t();
}
inline void AttributeProto::unsafe_arena_set_allocated_t(
    ::onnx::TensorProto* t) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(t_);
  }
  t_ = t;
  if (t) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.AttributeProto.t)
}
inline ::onnx::TensorProto* AttributeProto::release_t() {
  
  ::onnx::TensorProto* temp = t_;
  t_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TensorProto* AttributeProto::unsafe_arena_release_t() {
  // @@protoc_insertion_point(field_release:onnx.AttributeProto.t)
  
  ::onnx::TensorProto* temp = t_;
  t_ = nullptr;
  return temp;
}
inline ::onnx::TensorProto* AttributeProto::_internal_mutable_t() {
  
  if (t_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TensorProto>(GetArenaForAllocation());
    t_ = p;
  }
  return t_;
}
inline ::onnx::TensorProto* AttributeProto::mutable_t() {
  ::onnx::TensorProto* _msg = _internal_mutable_t();
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.t)
  return _msg;
}
inline void AttributeProto::set_allocated_t(::onnx::TensorProto* t) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete t_;
  }
  if (t) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TensorProto>::GetOwningArena(t);
    if (message_arena != submessage_arena) {
      t = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, t, submessage_arena);
    }
    
  } else {
    
  }
  t_ = t;
  // @@protoc_insertion_point(field_set_allocated:onnx.AttributeProto.t)
}

// .onnx.GraphProto g = 6;
inline bool AttributeProto::_internal_has_g() const {
  return this != internal_default_instance() && g_ != nullptr;
}
inline bool AttributeProto::has_g() const {
  return _internal_has_g();
}
inline void AttributeProto::clear_g() {
  if (GetArenaForAllocation() == nullptr && g_ != nullptr) {
    delete g_;
  }
  g_ = nullptr;
}
inline const ::onnx::GraphProto& AttributeProto::_internal_g() const {
  const ::onnx::GraphProto* p = g_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::GraphProto&>(
      ::onnx::_GraphProto_default_instance_);
}
inline const ::onnx::GraphProto& AttributeProto::g() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.g)
  return _internal_g();
}
inline void AttributeProto::unsafe_arena_set_allocated_g(
    ::onnx::GraphProto* g) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(g_);
  }
  g_ = g;
  if (g) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.AttributeProto.g)
}
inline ::onnx::GraphProto* AttributeProto::release_g() {
  
  ::onnx::GraphProto* temp = g_;
  g_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::GraphProto* AttributeProto::unsafe_arena_release_g() {
  // @@protoc_insertion_point(field_release:onnx.AttributeProto.g)
  
  ::onnx::GraphProto* temp = g_;
  g_ = nullptr;
  return temp;
}
inline ::onnx::GraphProto* AttributeProto::_internal_mutable_g() {
  
  if (g_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::GraphProto>(GetArenaForAllocation());
    g_ = p;
  }
  return g_;
}
inline ::onnx::GraphProto* AttributeProto::mutable_g() {
  ::onnx::GraphProto* _msg = _internal_mutable_g();
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.g)
  return _msg;
}
inline void AttributeProto::set_allocated_g(::onnx::GraphProto* g) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete g_;
  }
  if (g) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::GraphProto>::GetOwningArena(g);
    if (message_arena != submessage_arena) {
      g = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, g, submessage_arena);
    }
    
  } else {
    
  }
  g_ = g;
  // @@protoc_insertion_point(field_set_allocated:onnx.AttributeProto.g)
}

// .onnx.SparseTensorProto sparse_tensor = 22;
inline bool AttributeProto::_internal_has_sparse_tensor() const {
  return this != internal_default_instance() && sparse_tensor_ != nullptr;
}
inline bool AttributeProto::has_sparse_tensor() const {
  return _internal_has_sparse_tensor();
}
inline void AttributeProto::clear_sparse_tensor() {
  if (GetArenaForAllocation() == nullptr && sparse_tensor_ != nullptr) {
    delete sparse_tensor_;
  }
  sparse_tensor_ = nullptr;
}
inline const ::onnx::SparseTensorProto& AttributeProto::_internal_sparse_tensor() const {
  const ::onnx::SparseTensorProto* p = sparse_tensor_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::SparseTensorProto&>(
      ::onnx::_SparseTensorProto_default_instance_);
}
inline const ::onnx::SparseTensorProto& AttributeProto::sparse_tensor() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.sparse_tensor)
  return _internal_sparse_tensor();
}
inline void AttributeProto::unsafe_arena_set_allocated_sparse_tensor(
    ::onnx::SparseTensorProto* sparse_tensor) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(sparse_tensor_);
  }
  sparse_tensor_ = sparse_tensor;
  if (sparse_tensor) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.AttributeProto.sparse_tensor)
}
inline ::onnx::SparseTensorProto* AttributeProto::release_sparse_tensor() {
  
  ::onnx::SparseTensorProto* temp = sparse_tensor_;
  sparse_tensor_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::SparseTensorProto* AttributeProto::unsafe_arena_release_sparse_tensor() {
  // @@protoc_insertion_point(field_release:onnx.AttributeProto.sparse_tensor)
  
  ::onnx::SparseTensorProto* temp = sparse_tensor_;
  sparse_tensor_ = nullptr;
  return temp;
}
inline ::onnx::SparseTensorProto* AttributeProto::_internal_mutable_sparse_tensor() {
  
  if (sparse_tensor_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::SparseTensorProto>(GetArenaForAllocation());
    sparse_tensor_ = p;
  }
  return sparse_tensor_;
}
inline ::onnx::SparseTensorProto* AttributeProto::mutable_sparse_tensor() {
  ::onnx::SparseTensorProto* _msg = _internal_mutable_sparse_tensor();
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.sparse_tensor)
  return _msg;
}
inline void AttributeProto::set_allocated_sparse_tensor(::onnx::SparseTensorProto* sparse_tensor) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete sparse_tensor_;
  }
  if (sparse_tensor) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::SparseTensorProto>::GetOwningArena(sparse_tensor);
    if (message_arena != submessage_arena) {
      sparse_tensor = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, sparse_tensor, submessage_arena);
    }
    
  } else {
    
  }
  sparse_tensor_ = sparse_tensor;
  // @@protoc_insertion_point(field_set_allocated:onnx.AttributeProto.sparse_tensor)
}

// .onnx.TypeProto tp = 14;
inline bool AttributeProto::_internal_has_tp() const {
  return this != internal_default_instance() && tp_ != nullptr;
}
inline bool AttributeProto::has_tp() const {
  return _internal_has_tp();
}
inline void AttributeProto::clear_tp() {
  if (GetArenaForAllocation() == nullptr && tp_ != nullptr) {
    delete tp_;
  }
  tp_ = nullptr;
}
inline const ::onnx::TypeProto& AttributeProto::_internal_tp() const {
  const ::onnx::TypeProto* p = tp_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TypeProto&>(
      ::onnx::_TypeProto_default_instance_);
}
inline const ::onnx::TypeProto& AttributeProto::tp() const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.tp)
  return _internal_tp();
}
inline void AttributeProto::unsafe_arena_set_allocated_tp(
    ::onnx::TypeProto* tp) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(tp_);
  }
  tp_ = tp;
  if (tp) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.AttributeProto.tp)
}
inline ::onnx::TypeProto* AttributeProto::release_tp() {
  
  ::onnx::TypeProto* temp = tp_;
  tp_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TypeProto* AttributeProto::unsafe_arena_release_tp() {
  // @@protoc_insertion_point(field_release:onnx.AttributeProto.tp)
  
  ::onnx::TypeProto* temp = tp_;
  tp_ = nullptr;
  return temp;
}
inline ::onnx::TypeProto* AttributeProto::_internal_mutable_tp() {
  
  if (tp_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TypeProto>(GetArenaForAllocation());
    tp_ = p;
  }
  return tp_;
}
inline ::onnx::TypeProto* AttributeProto::mutable_tp() {
  ::onnx::TypeProto* _msg = _internal_mutable_tp();
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.tp)
  return _msg;
}
inline void AttributeProto::set_allocated_tp(::onnx::TypeProto* tp) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete tp_;
  }
  if (tp) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TypeProto>::GetOwningArena(tp);
    if (message_arena != submessage_arena) {
      tp = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, tp, submessage_arena);
    }
    
  } else {
    
  }
  tp_ = tp;
  // @@protoc_insertion_point(field_set_allocated:onnx.AttributeProto.tp)
}

// repeated float floats = 7;
inline int AttributeProto::_internal_floats_size() const {
  return floats_.size();
}
inline int AttributeProto::floats_size() const {
  return _internal_floats_size();
}
inline void AttributeProto::clear_floats() {
  floats_.Clear();
}
inline float AttributeProto::_internal_floats(int index) const {
  return floats_.Get(index);
}
inline float AttributeProto::floats(int index) const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.floats)
  return _internal_floats(index);
}
inline void AttributeProto::set_floats(int index, float value) {
  floats_.Set(index, value);
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.floats)
}
inline void AttributeProto::_internal_add_floats(float value) {
  floats_.Add(value);
}
inline void AttributeProto::add_floats(float value) {
  _internal_add_floats(value);
  // @@protoc_insertion_point(field_add:onnx.AttributeProto.floats)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
AttributeProto::_internal_floats() const {
  return floats_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
AttributeProto::floats() const {
  // @@protoc_insertion_point(field_list:onnx.AttributeProto.floats)
  return _internal_floats();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
AttributeProto::_internal_mutable_floats() {
  return &floats_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
AttributeProto::mutable_floats() {
  // @@protoc_insertion_point(field_mutable_list:onnx.AttributeProto.floats)
  return _internal_mutable_floats();
}

// repeated int64 ints = 8;
inline int AttributeProto::_internal_ints_size() const {
  return ints_.size();
}
inline int AttributeProto::ints_size() const {
  return _internal_ints_size();
}
inline void AttributeProto::clear_ints() {
  ints_.Clear();
}
inline int64_t AttributeProto::_internal_ints(int index) const {
  return ints_.Get(index);
}
inline int64_t AttributeProto::ints(int index) const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.ints)
  return _internal_ints(index);
}
inline void AttributeProto::set_ints(int index, int64_t value) {
  ints_.Set(index, value);
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.ints)
}
inline void AttributeProto::_internal_add_ints(int64_t value) {
  ints_.Add(value);
}
inline void AttributeProto::add_ints(int64_t value) {
  _internal_add_ints(value);
  // @@protoc_insertion_point(field_add:onnx.AttributeProto.ints)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
AttributeProto::_internal_ints() const {
  return ints_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
AttributeProto::ints() const {
  // @@protoc_insertion_point(field_list:onnx.AttributeProto.ints)
  return _internal_ints();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
AttributeProto::_internal_mutable_ints() {
  return &ints_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
AttributeProto::mutable_ints() {
  // @@protoc_insertion_point(field_mutable_list:onnx.AttributeProto.ints)
  return _internal_mutable_ints();
}

// repeated bytes strings = 9;
inline int AttributeProto::_internal_strings_size() const {
  return strings_.size();
}
inline int AttributeProto::strings_size() const {
  return _internal_strings_size();
}
inline void AttributeProto::clear_strings() {
  strings_.Clear();
}
inline std::string* AttributeProto::add_strings() {
  std::string* _s = _internal_add_strings();
  // @@protoc_insertion_point(field_add_mutable:onnx.AttributeProto.strings)
  return _s;
}
inline const std::string& AttributeProto::_internal_strings(int index) const {
  return strings_.Get(index);
}
inline const std::string& AttributeProto::strings(int index) const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.strings)
  return _internal_strings(index);
}
inline std::string* AttributeProto::mutable_strings(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.strings)
  return strings_.Mutable(index);
}
inline void AttributeProto::set_strings(int index, const std::string& value) {
  strings_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.strings)
}
inline void AttributeProto::set_strings(int index, std::string&& value) {
  strings_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:onnx.AttributeProto.strings)
}
inline void AttributeProto::set_strings(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  strings_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:onnx.AttributeProto.strings)
}
inline void AttributeProto::set_strings(int index, const void* value, size_t size) {
  strings_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:onnx.AttributeProto.strings)
}
inline std::string* AttributeProto::_internal_add_strings() {
  return strings_.Add();
}
inline void AttributeProto::add_strings(const std::string& value) {
  strings_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:onnx.AttributeProto.strings)
}
inline void AttributeProto::add_strings(std::string&& value) {
  strings_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:onnx.AttributeProto.strings)
}
inline void AttributeProto::add_strings(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  strings_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:onnx.AttributeProto.strings)
}
inline void AttributeProto::add_strings(const void* value, size_t size) {
  strings_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:onnx.AttributeProto.strings)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
AttributeProto::strings() const {
  // @@protoc_insertion_point(field_list:onnx.AttributeProto.strings)
  return strings_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
AttributeProto::mutable_strings() {
  // @@protoc_insertion_point(field_mutable_list:onnx.AttributeProto.strings)
  return &strings_;
}

// repeated .onnx.TensorProto tensors = 10;
inline int AttributeProto::_internal_tensors_size() const {
  return tensors_.size();
}
inline int AttributeProto::tensors_size() const {
  return _internal_tensors_size();
}
inline void AttributeProto::clear_tensors() {
  tensors_.Clear();
}
inline ::onnx::TensorProto* AttributeProto::mutable_tensors(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.tensors)
  return tensors_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto >*
AttributeProto::mutable_tensors() {
  // @@protoc_insertion_point(field_mutable_list:onnx.AttributeProto.tensors)
  return &tensors_;
}
inline const ::onnx::TensorProto& AttributeProto::_internal_tensors(int index) const {
  return tensors_.Get(index);
}
inline const ::onnx::TensorProto& AttributeProto::tensors(int index) const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.tensors)
  return _internal_tensors(index);
}
inline ::onnx::TensorProto* AttributeProto::_internal_add_tensors() {
  return tensors_.Add();
}
inline ::onnx::TensorProto* AttributeProto::add_tensors() {
  ::onnx::TensorProto* _add = _internal_add_tensors();
  // @@protoc_insertion_point(field_add:onnx.AttributeProto.tensors)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto >&
AttributeProto::tensors() const {
  // @@protoc_insertion_point(field_list:onnx.AttributeProto.tensors)
  return tensors_;
}

// repeated .onnx.GraphProto graphs = 11;
inline int AttributeProto::_internal_graphs_size() const {
  return graphs_.size();
}
inline int AttributeProto::graphs_size() const {
  return _internal_graphs_size();
}
inline void AttributeProto::clear_graphs() {
  graphs_.Clear();
}
inline ::onnx::GraphProto* AttributeProto::mutable_graphs(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.graphs)
  return graphs_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::GraphProto >*
AttributeProto::mutable_graphs() {
  // @@protoc_insertion_point(field_mutable_list:onnx.AttributeProto.graphs)
  return &graphs_;
}
inline const ::onnx::GraphProto& AttributeProto::_internal_graphs(int index) const {
  return graphs_.Get(index);
}
inline const ::onnx::GraphProto& AttributeProto::graphs(int index) const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.graphs)
  return _internal_graphs(index);
}
inline ::onnx::GraphProto* AttributeProto::_internal_add_graphs() {
  return graphs_.Add();
}
inline ::onnx::GraphProto* AttributeProto::add_graphs() {
  ::onnx::GraphProto* _add = _internal_add_graphs();
  // @@protoc_insertion_point(field_add:onnx.AttributeProto.graphs)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::GraphProto >&
AttributeProto::graphs() const {
  // @@protoc_insertion_point(field_list:onnx.AttributeProto.graphs)
  return graphs_;
}

// repeated .onnx.SparseTensorProto sparse_tensors = 23;
inline int AttributeProto::_internal_sparse_tensors_size() const {
  return sparse_tensors_.size();
}
inline int AttributeProto::sparse_tensors_size() const {
  return _internal_sparse_tensors_size();
}
inline void AttributeProto::clear_sparse_tensors() {
  sparse_tensors_.Clear();
}
inline ::onnx::SparseTensorProto* AttributeProto::mutable_sparse_tensors(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.sparse_tensors)
  return sparse_tensors_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto >*
AttributeProto::mutable_sparse_tensors() {
  // @@protoc_insertion_point(field_mutable_list:onnx.AttributeProto.sparse_tensors)
  return &sparse_tensors_;
}
inline const ::onnx::SparseTensorProto& AttributeProto::_internal_sparse_tensors(int index) const {
  return sparse_tensors_.Get(index);
}
inline const ::onnx::SparseTensorProto& AttributeProto::sparse_tensors(int index) const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.sparse_tensors)
  return _internal_sparse_tensors(index);
}
inline ::onnx::SparseTensorProto* AttributeProto::_internal_add_sparse_tensors() {
  return sparse_tensors_.Add();
}
inline ::onnx::SparseTensorProto* AttributeProto::add_sparse_tensors() {
  ::onnx::SparseTensorProto* _add = _internal_add_sparse_tensors();
  // @@protoc_insertion_point(field_add:onnx.AttributeProto.sparse_tensors)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto >&
AttributeProto::sparse_tensors() const {
  // @@protoc_insertion_point(field_list:onnx.AttributeProto.sparse_tensors)
  return sparse_tensors_;
}

// repeated .onnx.TypeProto type_protos = 15;
inline int AttributeProto::_internal_type_protos_size() const {
  return type_protos_.size();
}
inline int AttributeProto::type_protos_size() const {
  return _internal_type_protos_size();
}
inline void AttributeProto::clear_type_protos() {
  type_protos_.Clear();
}
inline ::onnx::TypeProto* AttributeProto::mutable_type_protos(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.AttributeProto.type_protos)
  return type_protos_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TypeProto >*
AttributeProto::mutable_type_protos() {
  // @@protoc_insertion_point(field_mutable_list:onnx.AttributeProto.type_protos)
  return &type_protos_;
}
inline const ::onnx::TypeProto& AttributeProto::_internal_type_protos(int index) const {
  return type_protos_.Get(index);
}
inline const ::onnx::TypeProto& AttributeProto::type_protos(int index) const {
  // @@protoc_insertion_point(field_get:onnx.AttributeProto.type_protos)
  return _internal_type_protos(index);
}
inline ::onnx::TypeProto* AttributeProto::_internal_add_type_protos() {
  return type_protos_.Add();
}
inline ::onnx::TypeProto* AttributeProto::add_type_protos() {
  ::onnx::TypeProto* _add = _internal_add_type_protos();
  // @@protoc_insertion_point(field_add:onnx.AttributeProto.type_protos)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TypeProto >&
AttributeProto::type_protos() const {
  // @@protoc_insertion_point(field_list:onnx.AttributeProto.type_protos)
  return type_protos_;
}

// -------------------------------------------------------------------

// ValueInfoProto

// string name = 1;
inline void ValueInfoProto::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& ValueInfoProto::name() const {
  // @@protoc_insertion_point(field_get:onnx.ValueInfoProto.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void ValueInfoProto::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.ValueInfoProto.name)
}
inline std::string* ValueInfoProto::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:onnx.ValueInfoProto.name)
  return _s;
}
inline const std::string& ValueInfoProto::_internal_name() const {
  return name_.Get();
}
inline void ValueInfoProto::_internal_set_name(const std::string& value) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* ValueInfoProto::_internal_mutable_name() {
  
  return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* ValueInfoProto::release_name() {
  // @@protoc_insertion_point(field_release:onnx.ValueInfoProto.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void ValueInfoProto::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.ValueInfoProto.name)
}

// .onnx.TypeProto type = 2;
inline bool ValueInfoProto::_internal_has_type() const {
  return this != internal_default_instance() && type_ != nullptr;
}
inline bool ValueInfoProto::has_type() const {
  return _internal_has_type();
}
inline void ValueInfoProto::clear_type() {
  if (GetArenaForAllocation() == nullptr && type_ != nullptr) {
    delete type_;
  }
  type_ = nullptr;
}
inline const ::onnx::TypeProto& ValueInfoProto::_internal_type() const {
  const ::onnx::TypeProto* p = type_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TypeProto&>(
      ::onnx::_TypeProto_default_instance_);
}
inline const ::onnx::TypeProto& ValueInfoProto::type() const {
  // @@protoc_insertion_point(field_get:onnx.ValueInfoProto.type)
  return _internal_type();
}
inline void ValueInfoProto::unsafe_arena_set_allocated_type(
    ::onnx::TypeProto* type) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(type_);
  }
  type_ = type;
  if (type) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.ValueInfoProto.type)
}
inline ::onnx::TypeProto* ValueInfoProto::release_type() {
  
  ::onnx::TypeProto* temp = type_;
  type_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TypeProto* ValueInfoProto::unsafe_arena_release_type() {
  // @@protoc_insertion_point(field_release:onnx.ValueInfoProto.type)
  
  ::onnx::TypeProto* temp = type_;
  type_ = nullptr;
  return temp;
}
inline ::onnx::TypeProto* ValueInfoProto::_internal_mutable_type() {
  
  if (type_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TypeProto>(GetArenaForAllocation());
    type_ = p;
  }
  return type_;
}
inline ::onnx::TypeProto* ValueInfoProto::mutable_type() {
  ::onnx::TypeProto* _msg = _internal_mutable_type();
  // @@protoc_insertion_point(field_mutable:onnx.ValueInfoProto.type)
  return _msg;
}
inline void ValueInfoProto::set_allocated_type(::onnx::TypeProto* type) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete type_;
  }
  if (type) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TypeProto>::GetOwningArena(type);
    if (message_arena != submessage_arena) {
      type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, type, submessage_arena);
    }
    
  } else {
    
  }
  type_ = type;
  // @@protoc_insertion_point(field_set_allocated:onnx.ValueInfoProto.type)
}

// string doc_string = 3;
inline void ValueInfoProto::clear_doc_string() {
  doc_string_.ClearToEmpty();
}
inline const std::string& ValueInfoProto::doc_string() const {
  // @@protoc_insertion_point(field_get:onnx.ValueInfoProto.doc_string)
  return _internal_doc_string();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void ValueInfoProto::set_doc_string(ArgT0&& arg0, ArgT... args) {
 
 doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.ValueInfoProto.doc_string)
}
inline std::string* ValueInfoProto::mutable_doc_string() {
  std::string* _s = _internal_mutable_doc_string();
  // @@protoc_insertion_point(field_mutable:onnx.ValueInfoProto.doc_string)
  return _s;
}
inline const std::string& ValueInfoProto::_internal_doc_string() const {
  return doc_string_.Get();
}
inline void ValueInfoProto::_internal_set_doc_string(const std::string& value) {
  
  doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* ValueInfoProto::_internal_mutable_doc_string() {
  
  return doc_string_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* ValueInfoProto::release_doc_string() {
  // @@protoc_insertion_point(field_release:onnx.ValueInfoProto.doc_string)
  return doc_string_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void ValueInfoProto::set_allocated_doc_string(std::string* doc_string) {
  if (doc_string != nullptr) {
    
  } else {
    
  }
  doc_string_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), doc_string,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (doc_string_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    doc_string_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.ValueInfoProto.doc_string)
}

// -------------------------------------------------------------------

// NodeProto

// repeated string input = 1;
inline int NodeProto::_internal_input_size() const {
  return input_.size();
}
inline int NodeProto::input_size() const {
  return _internal_input_size();
}
inline void NodeProto::clear_input() {
  input_.Clear();
}
inline std::string* NodeProto::add_input() {
  std::string* _s = _internal_add_input();
  // @@protoc_insertion_point(field_add_mutable:onnx.NodeProto.input)
  return _s;
}
inline const std::string& NodeProto::_internal_input(int index) const {
  return input_.Get(index);
}
inline const std::string& NodeProto::input(int index) const {
  // @@protoc_insertion_point(field_get:onnx.NodeProto.input)
  return _internal_input(index);
}
inline std::string* NodeProto::mutable_input(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.NodeProto.input)
  return input_.Mutable(index);
}
inline void NodeProto::set_input(int index, const std::string& value) {
  input_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:onnx.NodeProto.input)
}
inline void NodeProto::set_input(int index, std::string&& value) {
  input_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:onnx.NodeProto.input)
}
inline void NodeProto::set_input(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  input_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:onnx.NodeProto.input)
}
inline void NodeProto::set_input(int index, const char* value, size_t size) {
  input_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:onnx.NodeProto.input)
}
inline std::string* NodeProto::_internal_add_input() {
  return input_.Add();
}
inline void NodeProto::add_input(const std::string& value) {
  input_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:onnx.NodeProto.input)
}
inline void NodeProto::add_input(std::string&& value) {
  input_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:onnx.NodeProto.input)
}
inline void NodeProto::add_input(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  input_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:onnx.NodeProto.input)
}
inline void NodeProto::add_input(const char* value, size_t size) {
  input_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:onnx.NodeProto.input)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
NodeProto::input() const {
  // @@protoc_insertion_point(field_list:onnx.NodeProto.input)
  return input_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
NodeProto::mutable_input() {
  // @@protoc_insertion_point(field_mutable_list:onnx.NodeProto.input)
  return &input_;
}

// repeated string output = 2;
inline int NodeProto::_internal_output_size() const {
  return output_.size();
}
inline int NodeProto::output_size() const {
  return _internal_output_size();
}
inline void NodeProto::clear_output() {
  output_.Clear();
}
inline std::string* NodeProto::add_output() {
  std::string* _s = _internal_add_output();
  // @@protoc_insertion_point(field_add_mutable:onnx.NodeProto.output)
  return _s;
}
inline const std::string& NodeProto::_internal_output(int index) const {
  return output_.Get(index);
}
inline const std::string& NodeProto::output(int index) const {
  // @@protoc_insertion_point(field_get:onnx.NodeProto.output)
  return _internal_output(index);
}
inline std::string* NodeProto::mutable_output(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.NodeProto.output)
  return output_.Mutable(index);
}
inline void NodeProto::set_output(int index, const std::string& value) {
  output_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:onnx.NodeProto.output)
}
inline void NodeProto::set_output(int index, std::string&& value) {
  output_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:onnx.NodeProto.output)
}
inline void NodeProto::set_output(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  output_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:onnx.NodeProto.output)
}
inline void NodeProto::set_output(int index, const char* value, size_t size) {
  output_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:onnx.NodeProto.output)
}
inline std::string* NodeProto::_internal_add_output() {
  return output_.Add();
}
inline void NodeProto::add_output(const std::string& value) {
  output_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:onnx.NodeProto.output)
}
inline void NodeProto::add_output(std::string&& value) {
  output_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:onnx.NodeProto.output)
}
inline void NodeProto::add_output(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  output_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:onnx.NodeProto.output)
}
inline void NodeProto::add_output(const char* value, size_t size) {
  output_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:onnx.NodeProto.output)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
NodeProto::output() const {
  // @@protoc_insertion_point(field_list:onnx.NodeProto.output)
  return output_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
NodeProto::mutable_output() {
  // @@protoc_insertion_point(field_mutable_list:onnx.NodeProto.output)
  return &output_;
}

// string name = 3;
inline void NodeProto::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& NodeProto::name() const {
  // @@protoc_insertion_point(field_get:onnx.NodeProto.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void NodeProto::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.NodeProto.name)
}
inline std::string* NodeProto::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:onnx.NodeProto.name)
  return _s;
}
inline const std::string& NodeProto::_internal_name() const {
  return name_.Get();
}
inline void NodeProto::_internal_set_name(const std::string& value) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* NodeProto::_internal_mutable_name() {
  
  return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* NodeProto::release_name() {
  // @@protoc_insertion_point(field_release:onnx.NodeProto.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void NodeProto::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.NodeProto.name)
}

// string op_type = 4;
inline void NodeProto::clear_op_type() {
  op_type_.ClearToEmpty();
}
inline const std::string& NodeProto::op_type() const {
  // @@protoc_insertion_point(field_get:onnx.NodeProto.op_type)
  return _internal_op_type();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void NodeProto::set_op_type(ArgT0&& arg0, ArgT... args) {
 
 op_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.NodeProto.op_type)
}
inline std::string* NodeProto::mutable_op_type() {
  std::string* _s = _internal_mutable_op_type();
  // @@protoc_insertion_point(field_mutable:onnx.NodeProto.op_type)
  return _s;
}
inline const std::string& NodeProto::_internal_op_type() const {
  return op_type_.Get();
}
inline void NodeProto::_internal_set_op_type(const std::string& value) {
  
  op_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* NodeProto::_internal_mutable_op_type() {
  
  return op_type_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* NodeProto::release_op_type() {
  // @@protoc_insertion_point(field_release:onnx.NodeProto.op_type)
  return op_type_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void NodeProto::set_allocated_op_type(std::string* op_type) {
  if (op_type != nullptr) {
    
  } else {
    
  }
  op_type_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), op_type,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (op_type_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    op_type_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.NodeProto.op_type)
}

// string domain = 7;
inline void NodeProto::clear_domain() {
  domain_.ClearToEmpty();
}
inline const std::string& NodeProto::domain() const {
  // @@protoc_insertion_point(field_get:onnx.NodeProto.domain)
  return _internal_domain();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void NodeProto::set_domain(ArgT0&& arg0, ArgT... args) {
 
 domain_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.NodeProto.domain)
}
inline std::string* NodeProto::mutable_domain() {
  std::string* _s = _internal_mutable_domain();
  // @@protoc_insertion_point(field_mutable:onnx.NodeProto.domain)
  return _s;
}
inline const std::string& NodeProto::_internal_domain() const {
  return domain_.Get();
}
inline void NodeProto::_internal_set_domain(const std::string& value) {
  
  domain_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* NodeProto::_internal_mutable_domain() {
  
  return domain_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* NodeProto::release_domain() {
  // @@protoc_insertion_point(field_release:onnx.NodeProto.domain)
  return domain_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void NodeProto::set_allocated_domain(std::string* domain) {
  if (domain != nullptr) {
    
  } else {
    
  }
  domain_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), domain,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (domain_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    domain_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.NodeProto.domain)
}

// repeated .onnx.AttributeProto attribute = 5;
inline int NodeProto::_internal_attribute_size() const {
  return attribute_.size();
}
inline int NodeProto::attribute_size() const {
  return _internal_attribute_size();
}
inline void NodeProto::clear_attribute() {
  attribute_.Clear();
}
inline ::onnx::AttributeProto* NodeProto::mutable_attribute(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.NodeProto.attribute)
  return attribute_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::AttributeProto >*
NodeProto::mutable_attribute() {
  // @@protoc_insertion_point(field_mutable_list:onnx.NodeProto.attribute)
  return &attribute_;
}
inline const ::onnx::AttributeProto& NodeProto::_internal_attribute(int index) const {
  return attribute_.Get(index);
}
inline const ::onnx::AttributeProto& NodeProto::attribute(int index) const {
  // @@protoc_insertion_point(field_get:onnx.NodeProto.attribute)
  return _internal_attribute(index);
}
inline ::onnx::AttributeProto* NodeProto::_internal_add_attribute() {
  return attribute_.Add();
}
inline ::onnx::AttributeProto* NodeProto::add_attribute() {
  ::onnx::AttributeProto* _add = _internal_add_attribute();
  // @@protoc_insertion_point(field_add:onnx.NodeProto.attribute)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::AttributeProto >&
NodeProto::attribute() const {
  // @@protoc_insertion_point(field_list:onnx.NodeProto.attribute)
  return attribute_;
}

// string doc_string = 6;
inline void NodeProto::clear_doc_string() {
  doc_string_.ClearToEmpty();
}
inline const std::string& NodeProto::doc_string() const {
  // @@protoc_insertion_point(field_get:onnx.NodeProto.doc_string)
  return _internal_doc_string();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void NodeProto::set_doc_string(ArgT0&& arg0, ArgT... args) {
 
 doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.NodeProto.doc_string)
}
inline std::string* NodeProto::mutable_doc_string() {
  std::string* _s = _internal_mutable_doc_string();
  // @@protoc_insertion_point(field_mutable:onnx.NodeProto.doc_string)
  return _s;
}
inline const std::string& NodeProto::_internal_doc_string() const {
  return doc_string_.Get();
}
inline void NodeProto::_internal_set_doc_string(const std::string& value) {
  
  doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* NodeProto::_internal_mutable_doc_string() {
  
  return doc_string_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* NodeProto::release_doc_string() {
  // @@protoc_insertion_point(field_release:onnx.NodeProto.doc_string)
  return doc_string_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void NodeProto::set_allocated_doc_string(std::string* doc_string) {
  if (doc_string != nullptr) {
    
  } else {
    
  }
  doc_string_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), doc_string,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (doc_string_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    doc_string_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.NodeProto.doc_string)
}

// -------------------------------------------------------------------

// TrainingInfoProto

// .onnx.GraphProto initialization = 1;
inline bool TrainingInfoProto::_internal_has_initialization() const {
  return this != internal_default_instance() && initialization_ != nullptr;
}
inline bool TrainingInfoProto::has_initialization() const {
  return _internal_has_initialization();
}
inline void TrainingInfoProto::clear_initialization() {
  if (GetArenaForAllocation() == nullptr && initialization_ != nullptr) {
    delete initialization_;
  }
  initialization_ = nullptr;
}
inline const ::onnx::GraphProto& TrainingInfoProto::_internal_initialization() const {
  const ::onnx::GraphProto* p = initialization_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::GraphProto&>(
      ::onnx::_GraphProto_default_instance_);
}
inline const ::onnx::GraphProto& TrainingInfoProto::initialization() const {
  // @@protoc_insertion_point(field_get:onnx.TrainingInfoProto.initialization)
  return _internal_initialization();
}
inline void TrainingInfoProto::unsafe_arena_set_allocated_initialization(
    ::onnx::GraphProto* initialization) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(initialization_);
  }
  initialization_ = initialization;
  if (initialization) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TrainingInfoProto.initialization)
}
inline ::onnx::GraphProto* TrainingInfoProto::release_initialization() {
  
  ::onnx::GraphProto* temp = initialization_;
  initialization_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::GraphProto* TrainingInfoProto::unsafe_arena_release_initialization() {
  // @@protoc_insertion_point(field_release:onnx.TrainingInfoProto.initialization)
  
  ::onnx::GraphProto* temp = initialization_;
  initialization_ = nullptr;
  return temp;
}
inline ::onnx::GraphProto* TrainingInfoProto::_internal_mutable_initialization() {
  
  if (initialization_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::GraphProto>(GetArenaForAllocation());
    initialization_ = p;
  }
  return initialization_;
}
inline ::onnx::GraphProto* TrainingInfoProto::mutable_initialization() {
  ::onnx::GraphProto* _msg = _internal_mutable_initialization();
  // @@protoc_insertion_point(field_mutable:onnx.TrainingInfoProto.initialization)
  return _msg;
}
inline void TrainingInfoProto::set_allocated_initialization(::onnx::GraphProto* initialization) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete initialization_;
  }
  if (initialization) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::GraphProto>::GetOwningArena(initialization);
    if (message_arena != submessage_arena) {
      initialization = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, initialization, submessage_arena);
    }
    
  } else {
    
  }
  initialization_ = initialization;
  // @@protoc_insertion_point(field_set_allocated:onnx.TrainingInfoProto.initialization)
}

// .onnx.GraphProto algorithm = 2;
inline bool TrainingInfoProto::_internal_has_algorithm() const {
  return this != internal_default_instance() && algorithm_ != nullptr;
}
inline bool TrainingInfoProto::has_algorithm() const {
  return _internal_has_algorithm();
}
inline void TrainingInfoProto::clear_algorithm() {
  if (GetArenaForAllocation() == nullptr && algorithm_ != nullptr) {
    delete algorithm_;
  }
  algorithm_ = nullptr;
}
inline const ::onnx::GraphProto& TrainingInfoProto::_internal_algorithm() const {
  const ::onnx::GraphProto* p = algorithm_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::GraphProto&>(
      ::onnx::_GraphProto_default_instance_);
}
inline const ::onnx::GraphProto& TrainingInfoProto::algorithm() const {
  // @@protoc_insertion_point(field_get:onnx.TrainingInfoProto.algorithm)
  return _internal_algorithm();
}
inline void TrainingInfoProto::unsafe_arena_set_allocated_algorithm(
    ::onnx::GraphProto* algorithm) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(algorithm_);
  }
  algorithm_ = algorithm;
  if (algorithm) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TrainingInfoProto.algorithm)
}
inline ::onnx::GraphProto* TrainingInfoProto::release_algorithm() {
  
  ::onnx::GraphProto* temp = algorithm_;
  algorithm_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::GraphProto* TrainingInfoProto::unsafe_arena_release_algorithm() {
  // @@protoc_insertion_point(field_release:onnx.TrainingInfoProto.algorithm)
  
  ::onnx::GraphProto* temp = algorithm_;
  algorithm_ = nullptr;
  return temp;
}
inline ::onnx::GraphProto* TrainingInfoProto::_internal_mutable_algorithm() {
  
  if (algorithm_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::GraphProto>(GetArenaForAllocation());
    algorithm_ = p;
  }
  return algorithm_;
}
inline ::onnx::GraphProto* TrainingInfoProto::mutable_algorithm() {
  ::onnx::GraphProto* _msg = _internal_mutable_algorithm();
  // @@protoc_insertion_point(field_mutable:onnx.TrainingInfoProto.algorithm)
  return _msg;
}
inline void TrainingInfoProto::set_allocated_algorithm(::onnx::GraphProto* algorithm) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete algorithm_;
  }
  if (algorithm) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::GraphProto>::GetOwningArena(algorithm);
    if (message_arena != submessage_arena) {
      algorithm = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, algorithm, submessage_arena);
    }
    
  } else {
    
  }
  algorithm_ = algorithm;
  // @@protoc_insertion_point(field_set_allocated:onnx.TrainingInfoProto.algorithm)
}

// repeated .onnx.StringStringEntryProto initialization_binding = 3;
inline int TrainingInfoProto::_internal_initialization_binding_size() const {
  return initialization_binding_.size();
}
inline int TrainingInfoProto::initialization_binding_size() const {
  return _internal_initialization_binding_size();
}
inline void TrainingInfoProto::clear_initialization_binding() {
  initialization_binding_.Clear();
}
inline ::onnx::StringStringEntryProto* TrainingInfoProto::mutable_initialization_binding(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.TrainingInfoProto.initialization_binding)
  return initialization_binding_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
TrainingInfoProto::mutable_initialization_binding() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TrainingInfoProto.initialization_binding)
  return &initialization_binding_;
}
inline const ::onnx::StringStringEntryProto& TrainingInfoProto::_internal_initialization_binding(int index) const {
  return initialization_binding_.Get(index);
}
inline const ::onnx::StringStringEntryProto& TrainingInfoProto::initialization_binding(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TrainingInfoProto.initialization_binding)
  return _internal_initialization_binding(index);
}
inline ::onnx::StringStringEntryProto* TrainingInfoProto::_internal_add_initialization_binding() {
  return initialization_binding_.Add();
}
inline ::onnx::StringStringEntryProto* TrainingInfoProto::add_initialization_binding() {
  ::onnx::StringStringEntryProto* _add = _internal_add_initialization_binding();
  // @@protoc_insertion_point(field_add:onnx.TrainingInfoProto.initialization_binding)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
TrainingInfoProto::initialization_binding() const {
  // @@protoc_insertion_point(field_list:onnx.TrainingInfoProto.initialization_binding)
  return initialization_binding_;
}

// repeated .onnx.StringStringEntryProto update_binding = 4;
inline int TrainingInfoProto::_internal_update_binding_size() const {
  return update_binding_.size();
}
inline int TrainingInfoProto::update_binding_size() const {
  return _internal_update_binding_size();
}
inline void TrainingInfoProto::clear_update_binding() {
  update_binding_.Clear();
}
inline ::onnx::StringStringEntryProto* TrainingInfoProto::mutable_update_binding(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.TrainingInfoProto.update_binding)
  return update_binding_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
TrainingInfoProto::mutable_update_binding() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TrainingInfoProto.update_binding)
  return &update_binding_;
}
inline const ::onnx::StringStringEntryProto& TrainingInfoProto::_internal_update_binding(int index) const {
  return update_binding_.Get(index);
}
inline const ::onnx::StringStringEntryProto& TrainingInfoProto::update_binding(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TrainingInfoProto.update_binding)
  return _internal_update_binding(index);
}
inline ::onnx::StringStringEntryProto* TrainingInfoProto::_internal_add_update_binding() {
  return update_binding_.Add();
}
inline ::onnx::StringStringEntryProto* TrainingInfoProto::add_update_binding() {
  ::onnx::StringStringEntryProto* _add = _internal_add_update_binding();
  // @@protoc_insertion_point(field_add:onnx.TrainingInfoProto.update_binding)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
TrainingInfoProto::update_binding() const {
  // @@protoc_insertion_point(field_list:onnx.TrainingInfoProto.update_binding)
  return update_binding_;
}

// -------------------------------------------------------------------

// ModelProto

// int64 ir_version = 1;
inline void ModelProto::clear_ir_version() {
  ir_version_ = int64_t{0};
}
inline int64_t ModelProto::_internal_ir_version() const {
  return ir_version_;
}
inline int64_t ModelProto::ir_version() const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.ir_version)
  return _internal_ir_version();
}
inline void ModelProto::_internal_set_ir_version(int64_t value) {
  
  ir_version_ = value;
}
inline void ModelProto::set_ir_version(int64_t value) {
  _internal_set_ir_version(value);
  // @@protoc_insertion_point(field_set:onnx.ModelProto.ir_version)
}

// repeated .onnx.OperatorSetIdProto opset_import = 8;
inline int ModelProto::_internal_opset_import_size() const {
  return opset_import_.size();
}
inline int ModelProto::opset_import_size() const {
  return _internal_opset_import_size();
}
inline void ModelProto::clear_opset_import() {
  opset_import_.Clear();
}
inline ::onnx::OperatorSetIdProto* ModelProto::mutable_opset_import(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.ModelProto.opset_import)
  return opset_import_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto >*
ModelProto::mutable_opset_import() {
  // @@protoc_insertion_point(field_mutable_list:onnx.ModelProto.opset_import)
  return &opset_import_;
}
inline const ::onnx::OperatorSetIdProto& ModelProto::_internal_opset_import(int index) const {
  return opset_import_.Get(index);
}
inline const ::onnx::OperatorSetIdProto& ModelProto::opset_import(int index) const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.opset_import)
  return _internal_opset_import(index);
}
inline ::onnx::OperatorSetIdProto* ModelProto::_internal_add_opset_import() {
  return opset_import_.Add();
}
inline ::onnx::OperatorSetIdProto* ModelProto::add_opset_import() {
  ::onnx::OperatorSetIdProto* _add = _internal_add_opset_import();
  // @@protoc_insertion_point(field_add:onnx.ModelProto.opset_import)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto >&
ModelProto::opset_import() const {
  // @@protoc_insertion_point(field_list:onnx.ModelProto.opset_import)
  return opset_import_;
}

// string producer_name = 2;
inline void ModelProto::clear_producer_name() {
  producer_name_.ClearToEmpty();
}
inline const std::string& ModelProto::producer_name() const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.producer_name)
  return _internal_producer_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void ModelProto::set_producer_name(ArgT0&& arg0, ArgT... args) {
 
 producer_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.ModelProto.producer_name)
}
inline std::string* ModelProto::mutable_producer_name() {
  std::string* _s = _internal_mutable_producer_name();
  // @@protoc_insertion_point(field_mutable:onnx.ModelProto.producer_name)
  return _s;
}
inline const std::string& ModelProto::_internal_producer_name() const {
  return producer_name_.Get();
}
inline void ModelProto::_internal_set_producer_name(const std::string& value) {
  
  producer_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* ModelProto::_internal_mutable_producer_name() {
  
  return producer_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* ModelProto::release_producer_name() {
  // @@protoc_insertion_point(field_release:onnx.ModelProto.producer_name)
  return producer_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void ModelProto::set_allocated_producer_name(std::string* producer_name) {
  if (producer_name != nullptr) {
    
  } else {
    
  }
  producer_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), producer_name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (producer_name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    producer_name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.ModelProto.producer_name)
}

// string producer_version = 3;
inline void ModelProto::clear_producer_version() {
  producer_version_.ClearToEmpty();
}
inline const std::string& ModelProto::producer_version() const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.producer_version)
  return _internal_producer_version();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void ModelProto::set_producer_version(ArgT0&& arg0, ArgT... args) {
 
 producer_version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.ModelProto.producer_version)
}
inline std::string* ModelProto::mutable_producer_version() {
  std::string* _s = _internal_mutable_producer_version();
  // @@protoc_insertion_point(field_mutable:onnx.ModelProto.producer_version)
  return _s;
}
inline const std::string& ModelProto::_internal_producer_version() const {
  return producer_version_.Get();
}
inline void ModelProto::_internal_set_producer_version(const std::string& value) {
  
  producer_version_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* ModelProto::_internal_mutable_producer_version() {
  
  return producer_version_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* ModelProto::release_producer_version() {
  // @@protoc_insertion_point(field_release:onnx.ModelProto.producer_version)
  return producer_version_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void ModelProto::set_allocated_producer_version(std::string* producer_version) {
  if (producer_version != nullptr) {
    
  } else {
    
  }
  producer_version_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), producer_version,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (producer_version_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    producer_version_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.ModelProto.producer_version)
}

// string domain = 4;
inline void ModelProto::clear_domain() {
  domain_.ClearToEmpty();
}
inline const std::string& ModelProto::domain() const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.domain)
  return _internal_domain();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void ModelProto::set_domain(ArgT0&& arg0, ArgT... args) {
 
 domain_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.ModelProto.domain)
}
inline std::string* ModelProto::mutable_domain() {
  std::string* _s = _internal_mutable_domain();
  // @@protoc_insertion_point(field_mutable:onnx.ModelProto.domain)
  return _s;
}
inline const std::string& ModelProto::_internal_domain() const {
  return domain_.Get();
}
inline void ModelProto::_internal_set_domain(const std::string& value) {
  
  domain_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* ModelProto::_internal_mutable_domain() {
  
  return domain_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* ModelProto::release_domain() {
  // @@protoc_insertion_point(field_release:onnx.ModelProto.domain)
  return domain_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void ModelProto::set_allocated_domain(std::string* domain) {
  if (domain != nullptr) {
    
  } else {
    
  }
  domain_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), domain,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (domain_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    domain_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.ModelProto.domain)
}

// int64 model_version = 5;
inline void ModelProto::clear_model_version() {
  model_version_ = int64_t{0};
}
inline int64_t ModelProto::_internal_model_version() const {
  return model_version_;
}
inline int64_t ModelProto::model_version() const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.model_version)
  return _internal_model_version();
}
inline void ModelProto::_internal_set_model_version(int64_t value) {
  
  model_version_ = value;
}
inline void ModelProto::set_model_version(int64_t value) {
  _internal_set_model_version(value);
  // @@protoc_insertion_point(field_set:onnx.ModelProto.model_version)
}

// string doc_string = 6;
inline void ModelProto::clear_doc_string() {
  doc_string_.ClearToEmpty();
}
inline const std::string& ModelProto::doc_string() const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.doc_string)
  return _internal_doc_string();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void ModelProto::set_doc_string(ArgT0&& arg0, ArgT... args) {
 
 doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.ModelProto.doc_string)
}
inline std::string* ModelProto::mutable_doc_string() {
  std::string* _s = _internal_mutable_doc_string();
  // @@protoc_insertion_point(field_mutable:onnx.ModelProto.doc_string)
  return _s;
}
inline const std::string& ModelProto::_internal_doc_string() const {
  return doc_string_.Get();
}
inline void ModelProto::_internal_set_doc_string(const std::string& value) {
  
  doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* ModelProto::_internal_mutable_doc_string() {
  
  return doc_string_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* ModelProto::release_doc_string() {
  // @@protoc_insertion_point(field_release:onnx.ModelProto.doc_string)
  return doc_string_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void ModelProto::set_allocated_doc_string(std::string* doc_string) {
  if (doc_string != nullptr) {
    
  } else {
    
  }
  doc_string_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), doc_string,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (doc_string_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    doc_string_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.ModelProto.doc_string)
}

// .onnx.GraphProto graph = 7;
inline bool ModelProto::_internal_has_graph() const {
  return this != internal_default_instance() && graph_ != nullptr;
}
inline bool ModelProto::has_graph() const {
  return _internal_has_graph();
}
inline void ModelProto::clear_graph() {
  if (GetArenaForAllocation() == nullptr && graph_ != nullptr) {
    delete graph_;
  }
  graph_ = nullptr;
}
inline const ::onnx::GraphProto& ModelProto::_internal_graph() const {
  const ::onnx::GraphProto* p = graph_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::GraphProto&>(
      ::onnx::_GraphProto_default_instance_);
}
inline const ::onnx::GraphProto& ModelProto::graph() const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.graph)
  return _internal_graph();
}
inline void ModelProto::unsafe_arena_set_allocated_graph(
    ::onnx::GraphProto* graph) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(graph_);
  }
  graph_ = graph;
  if (graph) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.ModelProto.graph)
}
inline ::onnx::GraphProto* ModelProto::release_graph() {
  
  ::onnx::GraphProto* temp = graph_;
  graph_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::GraphProto* ModelProto::unsafe_arena_release_graph() {
  // @@protoc_insertion_point(field_release:onnx.ModelProto.graph)
  
  ::onnx::GraphProto* temp = graph_;
  graph_ = nullptr;
  return temp;
}
inline ::onnx::GraphProto* ModelProto::_internal_mutable_graph() {
  
  if (graph_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::GraphProto>(GetArenaForAllocation());
    graph_ = p;
  }
  return graph_;
}
inline ::onnx::GraphProto* ModelProto::mutable_graph() {
  ::onnx::GraphProto* _msg = _internal_mutable_graph();
  // @@protoc_insertion_point(field_mutable:onnx.ModelProto.graph)
  return _msg;
}
inline void ModelProto::set_allocated_graph(::onnx::GraphProto* graph) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete graph_;
  }
  if (graph) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::GraphProto>::GetOwningArena(graph);
    if (message_arena != submessage_arena) {
      graph = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, graph, submessage_arena);
    }
    
  } else {
    
  }
  graph_ = graph;
  // @@protoc_insertion_point(field_set_allocated:onnx.ModelProto.graph)
}

// repeated .onnx.StringStringEntryProto metadata_props = 14;
inline int ModelProto::_internal_metadata_props_size() const {
  return metadata_props_.size();
}
inline int ModelProto::metadata_props_size() const {
  return _internal_metadata_props_size();
}
inline void ModelProto::clear_metadata_props() {
  metadata_props_.Clear();
}
inline ::onnx::StringStringEntryProto* ModelProto::mutable_metadata_props(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.ModelProto.metadata_props)
  return metadata_props_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
ModelProto::mutable_metadata_props() {
  // @@protoc_insertion_point(field_mutable_list:onnx.ModelProto.metadata_props)
  return &metadata_props_;
}
inline const ::onnx::StringStringEntryProto& ModelProto::_internal_metadata_props(int index) const {
  return metadata_props_.Get(index);
}
inline const ::onnx::StringStringEntryProto& ModelProto::metadata_props(int index) const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.metadata_props)
  return _internal_metadata_props(index);
}
inline ::onnx::StringStringEntryProto* ModelProto::_internal_add_metadata_props() {
  return metadata_props_.Add();
}
inline ::onnx::StringStringEntryProto* ModelProto::add_metadata_props() {
  ::onnx::StringStringEntryProto* _add = _internal_add_metadata_props();
  // @@protoc_insertion_point(field_add:onnx.ModelProto.metadata_props)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
ModelProto::metadata_props() const {
  // @@protoc_insertion_point(field_list:onnx.ModelProto.metadata_props)
  return metadata_props_;
}

// repeated .onnx.TrainingInfoProto training_info = 20;
inline int ModelProto::_internal_training_info_size() const {
  return training_info_.size();
}
inline int ModelProto::training_info_size() const {
  return _internal_training_info_size();
}
inline void ModelProto::clear_training_info() {
  training_info_.Clear();
}
inline ::onnx::TrainingInfoProto* ModelProto::mutable_training_info(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.ModelProto.training_info)
  return training_info_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TrainingInfoProto >*
ModelProto::mutable_training_info() {
  // @@protoc_insertion_point(field_mutable_list:onnx.ModelProto.training_info)
  return &training_info_;
}
inline const ::onnx::TrainingInfoProto& ModelProto::_internal_training_info(int index) const {
  return training_info_.Get(index);
}
inline const ::onnx::TrainingInfoProto& ModelProto::training_info(int index) const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.training_info)
  return _internal_training_info(index);
}
inline ::onnx::TrainingInfoProto* ModelProto::_internal_add_training_info() {
  return training_info_.Add();
}
inline ::onnx::TrainingInfoProto* ModelProto::add_training_info() {
  ::onnx::TrainingInfoProto* _add = _internal_add_training_info();
  // @@protoc_insertion_point(field_add:onnx.ModelProto.training_info)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TrainingInfoProto >&
ModelProto::training_info() const {
  // @@protoc_insertion_point(field_list:onnx.ModelProto.training_info)
  return training_info_;
}

// repeated .onnx.FunctionProto functions = 25;
inline int ModelProto::_internal_functions_size() const {
  return functions_.size();
}
inline int ModelProto::functions_size() const {
  return _internal_functions_size();
}
inline void ModelProto::clear_functions() {
  functions_.Clear();
}
inline ::onnx::FunctionProto* ModelProto::mutable_functions(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.ModelProto.functions)
  return functions_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::FunctionProto >*
ModelProto::mutable_functions() {
  // @@protoc_insertion_point(field_mutable_list:onnx.ModelProto.functions)
  return &functions_;
}
inline const ::onnx::FunctionProto& ModelProto::_internal_functions(int index) const {
  return functions_.Get(index);
}
inline const ::onnx::FunctionProto& ModelProto::functions(int index) const {
  // @@protoc_insertion_point(field_get:onnx.ModelProto.functions)
  return _internal_functions(index);
}
inline ::onnx::FunctionProto* ModelProto::_internal_add_functions() {
  return functions_.Add();
}
inline ::onnx::FunctionProto* ModelProto::add_functions() {
  ::onnx::FunctionProto* _add = _internal_add_functions();
  // @@protoc_insertion_point(field_add:onnx.ModelProto.functions)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::FunctionProto >&
ModelProto::functions() const {
  // @@protoc_insertion_point(field_list:onnx.ModelProto.functions)
  return functions_;
}

// -------------------------------------------------------------------

// StringStringEntryProto

// string key = 1;
inline void StringStringEntryProto::clear_key() {
  key_.ClearToEmpty();
}
inline const std::string& StringStringEntryProto::key() const {
  // @@protoc_insertion_point(field_get:onnx.StringStringEntryProto.key)
  return _internal_key();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void StringStringEntryProto::set_key(ArgT0&& arg0, ArgT... args) {
 
 key_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.StringStringEntryProto.key)
}
inline std::string* StringStringEntryProto::mutable_key() {
  std::string* _s = _internal_mutable_key();
  // @@protoc_insertion_point(field_mutable:onnx.StringStringEntryProto.key)
  return _s;
}
inline const std::string& StringStringEntryProto::_internal_key() const {
  return key_.Get();
}
inline void StringStringEntryProto::_internal_set_key(const std::string& value) {
  
  key_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* StringStringEntryProto::_internal_mutable_key() {
  
  return key_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* StringStringEntryProto::release_key() {
  // @@protoc_insertion_point(field_release:onnx.StringStringEntryProto.key)
  return key_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void StringStringEntryProto::set_allocated_key(std::string* key) {
  if (key != nullptr) {
    
  } else {
    
  }
  key_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), key,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (key_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    key_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.StringStringEntryProto.key)
}

// string value = 2;
inline void StringStringEntryProto::clear_value() {
  value_.ClearToEmpty();
}
inline const std::string& StringStringEntryProto::value() const {
  // @@protoc_insertion_point(field_get:onnx.StringStringEntryProto.value)
  return _internal_value();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void StringStringEntryProto::set_value(ArgT0&& arg0, ArgT... args) {
 
 value_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.StringStringEntryProto.value)
}
inline std::string* StringStringEntryProto::mutable_value() {
  std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:onnx.StringStringEntryProto.value)
  return _s;
}
inline const std::string& StringStringEntryProto::_internal_value() const {
  return value_.Get();
}
inline void StringStringEntryProto::_internal_set_value(const std::string& value) {
  
  value_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* StringStringEntryProto::_internal_mutable_value() {
  
  return value_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* StringStringEntryProto::release_value() {
  // @@protoc_insertion_point(field_release:onnx.StringStringEntryProto.value)
  return value_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void StringStringEntryProto::set_allocated_value(std::string* value) {
  if (value != nullptr) {
    
  } else {
    
  }
  value_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (value_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    value_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.StringStringEntryProto.value)
}

// -------------------------------------------------------------------

// TensorAnnotation

// string tensor_name = 1;
inline void TensorAnnotation::clear_tensor_name() {
  tensor_name_.ClearToEmpty();
}
inline const std::string& TensorAnnotation::tensor_name() const {
  // @@protoc_insertion_point(field_get:onnx.TensorAnnotation.tensor_name)
  return _internal_tensor_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TensorAnnotation::set_tensor_name(ArgT0&& arg0, ArgT... args) {
 
 tensor_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.TensorAnnotation.tensor_name)
}
inline std::string* TensorAnnotation::mutable_tensor_name() {
  std::string* _s = _internal_mutable_tensor_name();
  // @@protoc_insertion_point(field_mutable:onnx.TensorAnnotation.tensor_name)
  return _s;
}
inline const std::string& TensorAnnotation::_internal_tensor_name() const {
  return tensor_name_.Get();
}
inline void TensorAnnotation::_internal_set_tensor_name(const std::string& value) {
  
  tensor_name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* TensorAnnotation::_internal_mutable_tensor_name() {
  
  return tensor_name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* TensorAnnotation::release_tensor_name() {
  // @@protoc_insertion_point(field_release:onnx.TensorAnnotation.tensor_name)
  return tensor_name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void TensorAnnotation::set_allocated_tensor_name(std::string* tensor_name) {
  if (tensor_name != nullptr) {
    
  } else {
    
  }
  tensor_name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), tensor_name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (tensor_name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    tensor_name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.TensorAnnotation.tensor_name)
}

// repeated .onnx.StringStringEntryProto quant_parameter_tensor_names = 2;
inline int TensorAnnotation::_internal_quant_parameter_tensor_names_size() const {
  return quant_parameter_tensor_names_.size();
}
inline int TensorAnnotation::quant_parameter_tensor_names_size() const {
  return _internal_quant_parameter_tensor_names_size();
}
inline void TensorAnnotation::clear_quant_parameter_tensor_names() {
  quant_parameter_tensor_names_.Clear();
}
inline ::onnx::StringStringEntryProto* TensorAnnotation::mutable_quant_parameter_tensor_names(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.TensorAnnotation.quant_parameter_tensor_names)
  return quant_parameter_tensor_names_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
TensorAnnotation::mutable_quant_parameter_tensor_names() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorAnnotation.quant_parameter_tensor_names)
  return &quant_parameter_tensor_names_;
}
inline const ::onnx::StringStringEntryProto& TensorAnnotation::_internal_quant_parameter_tensor_names(int index) const {
  return quant_parameter_tensor_names_.Get(index);
}
inline const ::onnx::StringStringEntryProto& TensorAnnotation::quant_parameter_tensor_names(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorAnnotation.quant_parameter_tensor_names)
  return _internal_quant_parameter_tensor_names(index);
}
inline ::onnx::StringStringEntryProto* TensorAnnotation::_internal_add_quant_parameter_tensor_names() {
  return quant_parameter_tensor_names_.Add();
}
inline ::onnx::StringStringEntryProto* TensorAnnotation::add_quant_parameter_tensor_names() {
  ::onnx::StringStringEntryProto* _add = _internal_add_quant_parameter_tensor_names();
  // @@protoc_insertion_point(field_add:onnx.TensorAnnotation.quant_parameter_tensor_names)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
TensorAnnotation::quant_parameter_tensor_names() const {
  // @@protoc_insertion_point(field_list:onnx.TensorAnnotation.quant_parameter_tensor_names)
  return quant_parameter_tensor_names_;
}

// -------------------------------------------------------------------

// GraphProto

// repeated .onnx.NodeProto node = 1;
inline int GraphProto::_internal_node_size() const {
  return node_.size();
}
inline int GraphProto::node_size() const {
  return _internal_node_size();
}
inline void GraphProto::clear_node() {
  node_.Clear();
}
inline ::onnx::NodeProto* GraphProto::mutable_node(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.GraphProto.node)
  return node_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto >*
GraphProto::mutable_node() {
  // @@protoc_insertion_point(field_mutable_list:onnx.GraphProto.node)
  return &node_;
}
inline const ::onnx::NodeProto& GraphProto::_internal_node(int index) const {
  return node_.Get(index);
}
inline const ::onnx::NodeProto& GraphProto::node(int index) const {
  // @@protoc_insertion_point(field_get:onnx.GraphProto.node)
  return _internal_node(index);
}
inline ::onnx::NodeProto* GraphProto::_internal_add_node() {
  return node_.Add();
}
inline ::onnx::NodeProto* GraphProto::add_node() {
  ::onnx::NodeProto* _add = _internal_add_node();
  // @@protoc_insertion_point(field_add:onnx.GraphProto.node)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto >&
GraphProto::node() const {
  // @@protoc_insertion_point(field_list:onnx.GraphProto.node)
  return node_;
}

// string name = 2;
inline void GraphProto::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& GraphProto::name() const {
  // @@protoc_insertion_point(field_get:onnx.GraphProto.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void GraphProto::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.GraphProto.name)
}
inline std::string* GraphProto::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:onnx.GraphProto.name)
  return _s;
}
inline const std::string& GraphProto::_internal_name() const {
  return name_.Get();
}
inline void GraphProto::_internal_set_name(const std::string& value) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GraphProto::_internal_mutable_name() {
  
  return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GraphProto::release_name() {
  // @@protoc_insertion_point(field_release:onnx.GraphProto.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GraphProto::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.GraphProto.name)
}

// repeated .onnx.TensorProto initializer = 5;
inline int GraphProto::_internal_initializer_size() const {
  return initializer_.size();
}
inline int GraphProto::initializer_size() const {
  return _internal_initializer_size();
}
inline void GraphProto::clear_initializer() {
  initializer_.Clear();
}
inline ::onnx::TensorProto* GraphProto::mutable_initializer(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.GraphProto.initializer)
  return initializer_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto >*
GraphProto::mutable_initializer() {
  // @@protoc_insertion_point(field_mutable_list:onnx.GraphProto.initializer)
  return &initializer_;
}
inline const ::onnx::TensorProto& GraphProto::_internal_initializer(int index) const {
  return initializer_.Get(index);
}
inline const ::onnx::TensorProto& GraphProto::initializer(int index) const {
  // @@protoc_insertion_point(field_get:onnx.GraphProto.initializer)
  return _internal_initializer(index);
}
inline ::onnx::TensorProto* GraphProto::_internal_add_initializer() {
  return initializer_.Add();
}
inline ::onnx::TensorProto* GraphProto::add_initializer() {
  ::onnx::TensorProto* _add = _internal_add_initializer();
  // @@protoc_insertion_point(field_add:onnx.GraphProto.initializer)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorProto >&
GraphProto::initializer() const {
  // @@protoc_insertion_point(field_list:onnx.GraphProto.initializer)
  return initializer_;
}

// repeated .onnx.SparseTensorProto sparse_initializer = 15;
inline int GraphProto::_internal_sparse_initializer_size() const {
  return sparse_initializer_.size();
}
inline int GraphProto::sparse_initializer_size() const {
  return _internal_sparse_initializer_size();
}
inline void GraphProto::clear_sparse_initializer() {
  sparse_initializer_.Clear();
}
inline ::onnx::SparseTensorProto* GraphProto::mutable_sparse_initializer(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.GraphProto.sparse_initializer)
  return sparse_initializer_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto >*
GraphProto::mutable_sparse_initializer() {
  // @@protoc_insertion_point(field_mutable_list:onnx.GraphProto.sparse_initializer)
  return &sparse_initializer_;
}
inline const ::onnx::SparseTensorProto& GraphProto::_internal_sparse_initializer(int index) const {
  return sparse_initializer_.Get(index);
}
inline const ::onnx::SparseTensorProto& GraphProto::sparse_initializer(int index) const {
  // @@protoc_insertion_point(field_get:onnx.GraphProto.sparse_initializer)
  return _internal_sparse_initializer(index);
}
inline ::onnx::SparseTensorProto* GraphProto::_internal_add_sparse_initializer() {
  return sparse_initializer_.Add();
}
inline ::onnx::SparseTensorProto* GraphProto::add_sparse_initializer() {
  ::onnx::SparseTensorProto* _add = _internal_add_sparse_initializer();
  // @@protoc_insertion_point(field_add:onnx.GraphProto.sparse_initializer)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::SparseTensorProto >&
GraphProto::sparse_initializer() const {
  // @@protoc_insertion_point(field_list:onnx.GraphProto.sparse_initializer)
  return sparse_initializer_;
}

// string doc_string = 10;
inline void GraphProto::clear_doc_string() {
  doc_string_.ClearToEmpty();
}
inline const std::string& GraphProto::doc_string() const {
  // @@protoc_insertion_point(field_get:onnx.GraphProto.doc_string)
  return _internal_doc_string();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void GraphProto::set_doc_string(ArgT0&& arg0, ArgT... args) {
 
 doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.GraphProto.doc_string)
}
inline std::string* GraphProto::mutable_doc_string() {
  std::string* _s = _internal_mutable_doc_string();
  // @@protoc_insertion_point(field_mutable:onnx.GraphProto.doc_string)
  return _s;
}
inline const std::string& GraphProto::_internal_doc_string() const {
  return doc_string_.Get();
}
inline void GraphProto::_internal_set_doc_string(const std::string& value) {
  
  doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* GraphProto::_internal_mutable_doc_string() {
  
  return doc_string_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* GraphProto::release_doc_string() {
  // @@protoc_insertion_point(field_release:onnx.GraphProto.doc_string)
  return doc_string_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void GraphProto::set_allocated_doc_string(std::string* doc_string) {
  if (doc_string != nullptr) {
    
  } else {
    
  }
  doc_string_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), doc_string,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (doc_string_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    doc_string_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.GraphProto.doc_string)
}

// repeated .onnx.ValueInfoProto input = 11;
inline int GraphProto::_internal_input_size() const {
  return input_.size();
}
inline int GraphProto::input_size() const {
  return _internal_input_size();
}
inline void GraphProto::clear_input() {
  input_.Clear();
}
inline ::onnx::ValueInfoProto* GraphProto::mutable_input(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.GraphProto.input)
  return input_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >*
GraphProto::mutable_input() {
  // @@protoc_insertion_point(field_mutable_list:onnx.GraphProto.input)
  return &input_;
}
inline const ::onnx::ValueInfoProto& GraphProto::_internal_input(int index) const {
  return input_.Get(index);
}
inline const ::onnx::ValueInfoProto& GraphProto::input(int index) const {
  // @@protoc_insertion_point(field_get:onnx.GraphProto.input)
  return _internal_input(index);
}
inline ::onnx::ValueInfoProto* GraphProto::_internal_add_input() {
  return input_.Add();
}
inline ::onnx::ValueInfoProto* GraphProto::add_input() {
  ::onnx::ValueInfoProto* _add = _internal_add_input();
  // @@protoc_insertion_point(field_add:onnx.GraphProto.input)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >&
GraphProto::input() const {
  // @@protoc_insertion_point(field_list:onnx.GraphProto.input)
  return input_;
}

// repeated .onnx.ValueInfoProto output = 12;
inline int GraphProto::_internal_output_size() const {
  return output_.size();
}
inline int GraphProto::output_size() const {
  return _internal_output_size();
}
inline void GraphProto::clear_output() {
  output_.Clear();
}
inline ::onnx::ValueInfoProto* GraphProto::mutable_output(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.GraphProto.output)
  return output_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >*
GraphProto::mutable_output() {
  // @@protoc_insertion_point(field_mutable_list:onnx.GraphProto.output)
  return &output_;
}
inline const ::onnx::ValueInfoProto& GraphProto::_internal_output(int index) const {
  return output_.Get(index);
}
inline const ::onnx::ValueInfoProto& GraphProto::output(int index) const {
  // @@protoc_insertion_point(field_get:onnx.GraphProto.output)
  return _internal_output(index);
}
inline ::onnx::ValueInfoProto* GraphProto::_internal_add_output() {
  return output_.Add();
}
inline ::onnx::ValueInfoProto* GraphProto::add_output() {
  ::onnx::ValueInfoProto* _add = _internal_add_output();
  // @@protoc_insertion_point(field_add:onnx.GraphProto.output)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >&
GraphProto::output() const {
  // @@protoc_insertion_point(field_list:onnx.GraphProto.output)
  return output_;
}

// repeated .onnx.ValueInfoProto value_info = 13;
inline int GraphProto::_internal_value_info_size() const {
  return value_info_.size();
}
inline int GraphProto::value_info_size() const {
  return _internal_value_info_size();
}
inline void GraphProto::clear_value_info() {
  value_info_.Clear();
}
inline ::onnx::ValueInfoProto* GraphProto::mutable_value_info(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.GraphProto.value_info)
  return value_info_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >*
GraphProto::mutable_value_info() {
  // @@protoc_insertion_point(field_mutable_list:onnx.GraphProto.value_info)
  return &value_info_;
}
inline const ::onnx::ValueInfoProto& GraphProto::_internal_value_info(int index) const {
  return value_info_.Get(index);
}
inline const ::onnx::ValueInfoProto& GraphProto::value_info(int index) const {
  // @@protoc_insertion_point(field_get:onnx.GraphProto.value_info)
  return _internal_value_info(index);
}
inline ::onnx::ValueInfoProto* GraphProto::_internal_add_value_info() {
  return value_info_.Add();
}
inline ::onnx::ValueInfoProto* GraphProto::add_value_info() {
  ::onnx::ValueInfoProto* _add = _internal_add_value_info();
  // @@protoc_insertion_point(field_add:onnx.GraphProto.value_info)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::ValueInfoProto >&
GraphProto::value_info() const {
  // @@protoc_insertion_point(field_list:onnx.GraphProto.value_info)
  return value_info_;
}

// repeated .onnx.TensorAnnotation quantization_annotation = 14;
inline int GraphProto::_internal_quantization_annotation_size() const {
  return quantization_annotation_.size();
}
inline int GraphProto::quantization_annotation_size() const {
  return _internal_quantization_annotation_size();
}
inline void GraphProto::clear_quantization_annotation() {
  quantization_annotation_.Clear();
}
inline ::onnx::TensorAnnotation* GraphProto::mutable_quantization_annotation(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.GraphProto.quantization_annotation)
  return quantization_annotation_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorAnnotation >*
GraphProto::mutable_quantization_annotation() {
  // @@protoc_insertion_point(field_mutable_list:onnx.GraphProto.quantization_annotation)
  return &quantization_annotation_;
}
inline const ::onnx::TensorAnnotation& GraphProto::_internal_quantization_annotation(int index) const {
  return quantization_annotation_.Get(index);
}
inline const ::onnx::TensorAnnotation& GraphProto::quantization_annotation(int index) const {
  // @@protoc_insertion_point(field_get:onnx.GraphProto.quantization_annotation)
  return _internal_quantization_annotation(index);
}
inline ::onnx::TensorAnnotation* GraphProto::_internal_add_quantization_annotation() {
  return quantization_annotation_.Add();
}
inline ::onnx::TensorAnnotation* GraphProto::add_quantization_annotation() {
  ::onnx::TensorAnnotation* _add = _internal_add_quantization_annotation();
  // @@protoc_insertion_point(field_add:onnx.GraphProto.quantization_annotation)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorAnnotation >&
GraphProto::quantization_annotation() const {
  // @@protoc_insertion_point(field_list:onnx.GraphProto.quantization_annotation)
  return quantization_annotation_;
}

// -------------------------------------------------------------------

// TensorProto_Segment

// int64 begin = 1;
inline void TensorProto_Segment::clear_begin() {
  begin_ = int64_t{0};
}
inline int64_t TensorProto_Segment::_internal_begin() const {
  return begin_;
}
inline int64_t TensorProto_Segment::begin() const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.Segment.begin)
  return _internal_begin();
}
inline void TensorProto_Segment::_internal_set_begin(int64_t value) {
  
  begin_ = value;
}
inline void TensorProto_Segment::set_begin(int64_t value) {
  _internal_set_begin(value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.Segment.begin)
}

// int64 end = 2;
inline void TensorProto_Segment::clear_end() {
  end_ = int64_t{0};
}
inline int64_t TensorProto_Segment::_internal_end() const {
  return end_;
}
inline int64_t TensorProto_Segment::end() const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.Segment.end)
  return _internal_end();
}
inline void TensorProto_Segment::_internal_set_end(int64_t value) {
  
  end_ = value;
}
inline void TensorProto_Segment::set_end(int64_t value) {
  _internal_set_end(value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.Segment.end)
}

// -------------------------------------------------------------------

// TensorProto

// repeated int64 dims = 1;
inline int TensorProto::_internal_dims_size() const {
  return dims_.size();
}
inline int TensorProto::dims_size() const {
  return _internal_dims_size();
}
inline void TensorProto::clear_dims() {
  dims_.Clear();
}
inline int64_t TensorProto::_internal_dims(int index) const {
  return dims_.Get(index);
}
inline int64_t TensorProto::dims(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.dims)
  return _internal_dims(index);
}
inline void TensorProto::set_dims(int index, int64_t value) {
  dims_.Set(index, value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.dims)
}
inline void TensorProto::_internal_add_dims(int64_t value) {
  dims_.Add(value);
}
inline void TensorProto::add_dims(int64_t value) {
  _internal_add_dims(value);
  // @@protoc_insertion_point(field_add:onnx.TensorProto.dims)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
TensorProto::_internal_dims() const {
  return dims_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
TensorProto::dims() const {
  // @@protoc_insertion_point(field_list:onnx.TensorProto.dims)
  return _internal_dims();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
TensorProto::_internal_mutable_dims() {
  return &dims_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
TensorProto::mutable_dims() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorProto.dims)
  return _internal_mutable_dims();
}

// int32 data_type = 2;
inline void TensorProto::clear_data_type() {
  data_type_ = 0;
}
inline int32_t TensorProto::_internal_data_type() const {
  return data_type_;
}
inline int32_t TensorProto::data_type() const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.data_type)
  return _internal_data_type();
}
inline void TensorProto::_internal_set_data_type(int32_t value) {
  
  data_type_ = value;
}
inline void TensorProto::set_data_type(int32_t value) {
  _internal_set_data_type(value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.data_type)
}

// .onnx.TensorProto.Segment segment = 3;
inline bool TensorProto::_internal_has_segment() const {
  return this != internal_default_instance() && segment_ != nullptr;
}
inline bool TensorProto::has_segment() const {
  return _internal_has_segment();
}
inline void TensorProto::clear_segment() {
  if (GetArenaForAllocation() == nullptr && segment_ != nullptr) {
    delete segment_;
  }
  segment_ = nullptr;
}
inline const ::onnx::TensorProto_Segment& TensorProto::_internal_segment() const {
  const ::onnx::TensorProto_Segment* p = segment_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TensorProto_Segment&>(
      ::onnx::_TensorProto_Segment_default_instance_);
}
inline const ::onnx::TensorProto_Segment& TensorProto::segment() const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.segment)
  return _internal_segment();
}
inline void TensorProto::unsafe_arena_set_allocated_segment(
    ::onnx::TensorProto_Segment* segment) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(segment_);
  }
  segment_ = segment;
  if (segment) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TensorProto.segment)
}
inline ::onnx::TensorProto_Segment* TensorProto::release_segment() {
  
  ::onnx::TensorProto_Segment* temp = segment_;
  segment_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TensorProto_Segment* TensorProto::unsafe_arena_release_segment() {
  // @@protoc_insertion_point(field_release:onnx.TensorProto.segment)
  
  ::onnx::TensorProto_Segment* temp = segment_;
  segment_ = nullptr;
  return temp;
}
inline ::onnx::TensorProto_Segment* TensorProto::_internal_mutable_segment() {
  
  if (segment_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TensorProto_Segment>(GetArenaForAllocation());
    segment_ = p;
  }
  return segment_;
}
inline ::onnx::TensorProto_Segment* TensorProto::mutable_segment() {
  ::onnx::TensorProto_Segment* _msg = _internal_mutable_segment();
  // @@protoc_insertion_point(field_mutable:onnx.TensorProto.segment)
  return _msg;
}
inline void TensorProto::set_allocated_segment(::onnx::TensorProto_Segment* segment) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete segment_;
  }
  if (segment) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TensorProto_Segment>::GetOwningArena(segment);
    if (message_arena != submessage_arena) {
      segment = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, segment, submessage_arena);
    }
    
  } else {
    
  }
  segment_ = segment;
  // @@protoc_insertion_point(field_set_allocated:onnx.TensorProto.segment)
}

// repeated float float_data = 4 [packed = true];
inline int TensorProto::_internal_float_data_size() const {
  return float_data_.size();
}
inline int TensorProto::float_data_size() const {
  return _internal_float_data_size();
}
inline void TensorProto::clear_float_data() {
  float_data_.Clear();
}
inline float TensorProto::_internal_float_data(int index) const {
  return float_data_.Get(index);
}
inline float TensorProto::float_data(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.float_data)
  return _internal_float_data(index);
}
inline void TensorProto::set_float_data(int index, float value) {
  float_data_.Set(index, value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.float_data)
}
inline void TensorProto::_internal_add_float_data(float value) {
  float_data_.Add(value);
}
inline void TensorProto::add_float_data(float value) {
  _internal_add_float_data(value);
  // @@protoc_insertion_point(field_add:onnx.TensorProto.float_data)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
TensorProto::_internal_float_data() const {
  return float_data_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
TensorProto::float_data() const {
  // @@protoc_insertion_point(field_list:onnx.TensorProto.float_data)
  return _internal_float_data();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
TensorProto::_internal_mutable_float_data() {
  return &float_data_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
TensorProto::mutable_float_data() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorProto.float_data)
  return _internal_mutable_float_data();
}

// repeated int32 int32_data = 5 [packed = true];
inline int TensorProto::_internal_int32_data_size() const {
  return int32_data_.size();
}
inline int TensorProto::int32_data_size() const {
  return _internal_int32_data_size();
}
inline void TensorProto::clear_int32_data() {
  int32_data_.Clear();
}
inline int32_t TensorProto::_internal_int32_data(int index) const {
  return int32_data_.Get(index);
}
inline int32_t TensorProto::int32_data(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.int32_data)
  return _internal_int32_data(index);
}
inline void TensorProto::set_int32_data(int index, int32_t value) {
  int32_data_.Set(index, value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.int32_data)
}
inline void TensorProto::_internal_add_int32_data(int32_t value) {
  int32_data_.Add(value);
}
inline void TensorProto::add_int32_data(int32_t value) {
  _internal_add_int32_data(value);
  // @@protoc_insertion_point(field_add:onnx.TensorProto.int32_data)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
TensorProto::_internal_int32_data() const {
  return int32_data_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
TensorProto::int32_data() const {
  // @@protoc_insertion_point(field_list:onnx.TensorProto.int32_data)
  return _internal_int32_data();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
TensorProto::_internal_mutable_int32_data() {
  return &int32_data_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
TensorProto::mutable_int32_data() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorProto.int32_data)
  return _internal_mutable_int32_data();
}

// repeated bytes string_data = 6;
inline int TensorProto::_internal_string_data_size() const {
  return string_data_.size();
}
inline int TensorProto::string_data_size() const {
  return _internal_string_data_size();
}
inline void TensorProto::clear_string_data() {
  string_data_.Clear();
}
inline std::string* TensorProto::add_string_data() {
  std::string* _s = _internal_add_string_data();
  // @@protoc_insertion_point(field_add_mutable:onnx.TensorProto.string_data)
  return _s;
}
inline const std::string& TensorProto::_internal_string_data(int index) const {
  return string_data_.Get(index);
}
inline const std::string& TensorProto::string_data(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.string_data)
  return _internal_string_data(index);
}
inline std::string* TensorProto::mutable_string_data(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.TensorProto.string_data)
  return string_data_.Mutable(index);
}
inline void TensorProto::set_string_data(int index, const std::string& value) {
  string_data_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.string_data)
}
inline void TensorProto::set_string_data(int index, std::string&& value) {
  string_data_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:onnx.TensorProto.string_data)
}
inline void TensorProto::set_string_data(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  string_data_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:onnx.TensorProto.string_data)
}
inline void TensorProto::set_string_data(int index, const void* value, size_t size) {
  string_data_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:onnx.TensorProto.string_data)
}
inline std::string* TensorProto::_internal_add_string_data() {
  return string_data_.Add();
}
inline void TensorProto::add_string_data(const std::string& value) {
  string_data_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:onnx.TensorProto.string_data)
}
inline void TensorProto::add_string_data(std::string&& value) {
  string_data_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:onnx.TensorProto.string_data)
}
inline void TensorProto::add_string_data(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  string_data_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:onnx.TensorProto.string_data)
}
inline void TensorProto::add_string_data(const void* value, size_t size) {
  string_data_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:onnx.TensorProto.string_data)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
TensorProto::string_data() const {
  // @@protoc_insertion_point(field_list:onnx.TensorProto.string_data)
  return string_data_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
TensorProto::mutable_string_data() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorProto.string_data)
  return &string_data_;
}

// repeated int64 int64_data = 7 [packed = true];
inline int TensorProto::_internal_int64_data_size() const {
  return int64_data_.size();
}
inline int TensorProto::int64_data_size() const {
  return _internal_int64_data_size();
}
inline void TensorProto::clear_int64_data() {
  int64_data_.Clear();
}
inline int64_t TensorProto::_internal_int64_data(int index) const {
  return int64_data_.Get(index);
}
inline int64_t TensorProto::int64_data(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.int64_data)
  return _internal_int64_data(index);
}
inline void TensorProto::set_int64_data(int index, int64_t value) {
  int64_data_.Set(index, value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.int64_data)
}
inline void TensorProto::_internal_add_int64_data(int64_t value) {
  int64_data_.Add(value);
}
inline void TensorProto::add_int64_data(int64_t value) {
  _internal_add_int64_data(value);
  // @@protoc_insertion_point(field_add:onnx.TensorProto.int64_data)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
TensorProto::_internal_int64_data() const {
  return int64_data_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
TensorProto::int64_data() const {
  // @@protoc_insertion_point(field_list:onnx.TensorProto.int64_data)
  return _internal_int64_data();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
TensorProto::_internal_mutable_int64_data() {
  return &int64_data_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
TensorProto::mutable_int64_data() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorProto.int64_data)
  return _internal_mutable_int64_data();
}

// string name = 8;
inline void TensorProto::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& TensorProto::name() const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TensorProto::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.TensorProto.name)
}
inline std::string* TensorProto::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:onnx.TensorProto.name)
  return _s;
}
inline const std::string& TensorProto::_internal_name() const {
  return name_.Get();
}
inline void TensorProto::_internal_set_name(const std::string& value) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* TensorProto::_internal_mutable_name() {
  
  return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* TensorProto::release_name() {
  // @@protoc_insertion_point(field_release:onnx.TensorProto.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void TensorProto::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.TensorProto.name)
}

// string doc_string = 12;
inline void TensorProto::clear_doc_string() {
  doc_string_.ClearToEmpty();
}
inline const std::string& TensorProto::doc_string() const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.doc_string)
  return _internal_doc_string();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TensorProto::set_doc_string(ArgT0&& arg0, ArgT... args) {
 
 doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.TensorProto.doc_string)
}
inline std::string* TensorProto::mutable_doc_string() {
  std::string* _s = _internal_mutable_doc_string();
  // @@protoc_insertion_point(field_mutable:onnx.TensorProto.doc_string)
  return _s;
}
inline const std::string& TensorProto::_internal_doc_string() const {
  return doc_string_.Get();
}
inline void TensorProto::_internal_set_doc_string(const std::string& value) {
  
  doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* TensorProto::_internal_mutable_doc_string() {
  
  return doc_string_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* TensorProto::release_doc_string() {
  // @@protoc_insertion_point(field_release:onnx.TensorProto.doc_string)
  return doc_string_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void TensorProto::set_allocated_doc_string(std::string* doc_string) {
  if (doc_string != nullptr) {
    
  } else {
    
  }
  doc_string_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), doc_string,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (doc_string_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    doc_string_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.TensorProto.doc_string)
}

// bytes raw_data = 9;
inline void TensorProto::clear_raw_data() {
  raw_data_.ClearToEmpty();
}
inline const std::string& TensorProto::raw_data() const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.raw_data)
  return _internal_raw_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TensorProto::set_raw_data(ArgT0&& arg0, ArgT... args) {
 
 raw_data_.SetBytes(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.TensorProto.raw_data)
}
inline std::string* TensorProto::mutable_raw_data() {
  std::string* _s = _internal_mutable_raw_data();
  // @@protoc_insertion_point(field_mutable:onnx.TensorProto.raw_data)
  return _s;
}
inline const std::string& TensorProto::_internal_raw_data() const {
  return raw_data_.Get();
}
inline void TensorProto::_internal_set_raw_data(const std::string& value) {
  
  raw_data_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* TensorProto::_internal_mutable_raw_data() {
  
  return raw_data_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* TensorProto::release_raw_data() {
  // @@protoc_insertion_point(field_release:onnx.TensorProto.raw_data)
  return raw_data_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void TensorProto::set_allocated_raw_data(std::string* raw_data) {
  if (raw_data != nullptr) {
    
  } else {
    
  }
  raw_data_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), raw_data,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (raw_data_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    raw_data_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.TensorProto.raw_data)
}

// repeated .onnx.StringStringEntryProto external_data = 13;
inline int TensorProto::_internal_external_data_size() const {
  return external_data_.size();
}
inline int TensorProto::external_data_size() const {
  return _internal_external_data_size();
}
inline void TensorProto::clear_external_data() {
  external_data_.Clear();
}
inline ::onnx::StringStringEntryProto* TensorProto::mutable_external_data(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.TensorProto.external_data)
  return external_data_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >*
TensorProto::mutable_external_data() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorProto.external_data)
  return &external_data_;
}
inline const ::onnx::StringStringEntryProto& TensorProto::_internal_external_data(int index) const {
  return external_data_.Get(index);
}
inline const ::onnx::StringStringEntryProto& TensorProto::external_data(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.external_data)
  return _internal_external_data(index);
}
inline ::onnx::StringStringEntryProto* TensorProto::_internal_add_external_data() {
  return external_data_.Add();
}
inline ::onnx::StringStringEntryProto* TensorProto::add_external_data() {
  ::onnx::StringStringEntryProto* _add = _internal_add_external_data();
  // @@protoc_insertion_point(field_add:onnx.TensorProto.external_data)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::StringStringEntryProto >&
TensorProto::external_data() const {
  // @@protoc_insertion_point(field_list:onnx.TensorProto.external_data)
  return external_data_;
}

// .onnx.TensorProto.DataLocation data_location = 14;
inline void TensorProto::clear_data_location() {
  data_location_ = 0;
}
inline ::onnx::TensorProto_DataLocation TensorProto::_internal_data_location() const {
  return static_cast< ::onnx::TensorProto_DataLocation >(data_location_);
}
inline ::onnx::TensorProto_DataLocation TensorProto::data_location() const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.data_location)
  return _internal_data_location();
}
inline void TensorProto::_internal_set_data_location(::onnx::TensorProto_DataLocation value) {
  
  data_location_ = value;
}
inline void TensorProto::set_data_location(::onnx::TensorProto_DataLocation value) {
  _internal_set_data_location(value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.data_location)
}

// repeated double double_data = 10 [packed = true];
inline int TensorProto::_internal_double_data_size() const {
  return double_data_.size();
}
inline int TensorProto::double_data_size() const {
  return _internal_double_data_size();
}
inline void TensorProto::clear_double_data() {
  double_data_.Clear();
}
inline double TensorProto::_internal_double_data(int index) const {
  return double_data_.Get(index);
}
inline double TensorProto::double_data(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.double_data)
  return _internal_double_data(index);
}
inline void TensorProto::set_double_data(int index, double value) {
  double_data_.Set(index, value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.double_data)
}
inline void TensorProto::_internal_add_double_data(double value) {
  double_data_.Add(value);
}
inline void TensorProto::add_double_data(double value) {
  _internal_add_double_data(value);
  // @@protoc_insertion_point(field_add:onnx.TensorProto.double_data)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
TensorProto::_internal_double_data() const {
  return double_data_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
TensorProto::double_data() const {
  // @@protoc_insertion_point(field_list:onnx.TensorProto.double_data)
  return _internal_double_data();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
TensorProto::_internal_mutable_double_data() {
  return &double_data_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
TensorProto::mutable_double_data() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorProto.double_data)
  return _internal_mutable_double_data();
}

// repeated uint64 uint64_data = 11 [packed = true];
inline int TensorProto::_internal_uint64_data_size() const {
  return uint64_data_.size();
}
inline int TensorProto::uint64_data_size() const {
  return _internal_uint64_data_size();
}
inline void TensorProto::clear_uint64_data() {
  uint64_data_.Clear();
}
inline uint64_t TensorProto::_internal_uint64_data(int index) const {
  return uint64_data_.Get(index);
}
inline uint64_t TensorProto::uint64_data(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorProto.uint64_data)
  return _internal_uint64_data(index);
}
inline void TensorProto::set_uint64_data(int index, uint64_t value) {
  uint64_data_.Set(index, value);
  // @@protoc_insertion_point(field_set:onnx.TensorProto.uint64_data)
}
inline void TensorProto::_internal_add_uint64_data(uint64_t value) {
  uint64_data_.Add(value);
}
inline void TensorProto::add_uint64_data(uint64_t value) {
  _internal_add_uint64_data(value);
  // @@protoc_insertion_point(field_add:onnx.TensorProto.uint64_data)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >&
TensorProto::_internal_uint64_data() const {
  return uint64_data_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >&
TensorProto::uint64_data() const {
  // @@protoc_insertion_point(field_list:onnx.TensorProto.uint64_data)
  return _internal_uint64_data();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >*
TensorProto::_internal_mutable_uint64_data() {
  return &uint64_data_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< uint64_t >*
TensorProto::mutable_uint64_data() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorProto.uint64_data)
  return _internal_mutable_uint64_data();
}

// -------------------------------------------------------------------

// SparseTensorProto

// .onnx.TensorProto values = 1;
inline bool SparseTensorProto::_internal_has_values() const {
  return this != internal_default_instance() && values_ != nullptr;
}
inline bool SparseTensorProto::has_values() const {
  return _internal_has_values();
}
inline void SparseTensorProto::clear_values() {
  if (GetArenaForAllocation() == nullptr && values_ != nullptr) {
    delete values_;
  }
  values_ = nullptr;
}
inline const ::onnx::TensorProto& SparseTensorProto::_internal_values() const {
  const ::onnx::TensorProto* p = values_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TensorProto&>(
      ::onnx::_TensorProto_default_instance_);
}
inline const ::onnx::TensorProto& SparseTensorProto::values() const {
  // @@protoc_insertion_point(field_get:onnx.SparseTensorProto.values)
  return _internal_values();
}
inline void SparseTensorProto::unsafe_arena_set_allocated_values(
    ::onnx::TensorProto* values) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(values_);
  }
  values_ = values;
  if (values) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.SparseTensorProto.values)
}
inline ::onnx::TensorProto* SparseTensorProto::release_values() {
  
  ::onnx::TensorProto* temp = values_;
  values_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TensorProto* SparseTensorProto::unsafe_arena_release_values() {
  // @@protoc_insertion_point(field_release:onnx.SparseTensorProto.values)
  
  ::onnx::TensorProto* temp = values_;
  values_ = nullptr;
  return temp;
}
inline ::onnx::TensorProto* SparseTensorProto::_internal_mutable_values() {
  
  if (values_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TensorProto>(GetArenaForAllocation());
    values_ = p;
  }
  return values_;
}
inline ::onnx::TensorProto* SparseTensorProto::mutable_values() {
  ::onnx::TensorProto* _msg = _internal_mutable_values();
  // @@protoc_insertion_point(field_mutable:onnx.SparseTensorProto.values)
  return _msg;
}
inline void SparseTensorProto::set_allocated_values(::onnx::TensorProto* values) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete values_;
  }
  if (values) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TensorProto>::GetOwningArena(values);
    if (message_arena != submessage_arena) {
      values = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, values, submessage_arena);
    }
    
  } else {
    
  }
  values_ = values;
  // @@protoc_insertion_point(field_set_allocated:onnx.SparseTensorProto.values)
}

// .onnx.TensorProto indices = 2;
inline bool SparseTensorProto::_internal_has_indices() const {
  return this != internal_default_instance() && indices_ != nullptr;
}
inline bool SparseTensorProto::has_indices() const {
  return _internal_has_indices();
}
inline void SparseTensorProto::clear_indices() {
  if (GetArenaForAllocation() == nullptr && indices_ != nullptr) {
    delete indices_;
  }
  indices_ = nullptr;
}
inline const ::onnx::TensorProto& SparseTensorProto::_internal_indices() const {
  const ::onnx::TensorProto* p = indices_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TensorProto&>(
      ::onnx::_TensorProto_default_instance_);
}
inline const ::onnx::TensorProto& SparseTensorProto::indices() const {
  // @@protoc_insertion_point(field_get:onnx.SparseTensorProto.indices)
  return _internal_indices();
}
inline void SparseTensorProto::unsafe_arena_set_allocated_indices(
    ::onnx::TensorProto* indices) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(indices_);
  }
  indices_ = indices;
  if (indices) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.SparseTensorProto.indices)
}
inline ::onnx::TensorProto* SparseTensorProto::release_indices() {
  
  ::onnx::TensorProto* temp = indices_;
  indices_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TensorProto* SparseTensorProto::unsafe_arena_release_indices() {
  // @@protoc_insertion_point(field_release:onnx.SparseTensorProto.indices)
  
  ::onnx::TensorProto* temp = indices_;
  indices_ = nullptr;
  return temp;
}
inline ::onnx::TensorProto* SparseTensorProto::_internal_mutable_indices() {
  
  if (indices_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TensorProto>(GetArenaForAllocation());
    indices_ = p;
  }
  return indices_;
}
inline ::onnx::TensorProto* SparseTensorProto::mutable_indices() {
  ::onnx::TensorProto* _msg = _internal_mutable_indices();
  // @@protoc_insertion_point(field_mutable:onnx.SparseTensorProto.indices)
  return _msg;
}
inline void SparseTensorProto::set_allocated_indices(::onnx::TensorProto* indices) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete indices_;
  }
  if (indices) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TensorProto>::GetOwningArena(indices);
    if (message_arena != submessage_arena) {
      indices = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, indices, submessage_arena);
    }
    
  } else {
    
  }
  indices_ = indices;
  // @@protoc_insertion_point(field_set_allocated:onnx.SparseTensorProto.indices)
}

// repeated int64 dims = 3;
inline int SparseTensorProto::_internal_dims_size() const {
  return dims_.size();
}
inline int SparseTensorProto::dims_size() const {
  return _internal_dims_size();
}
inline void SparseTensorProto::clear_dims() {
  dims_.Clear();
}
inline int64_t SparseTensorProto::_internal_dims(int index) const {
  return dims_.Get(index);
}
inline int64_t SparseTensorProto::dims(int index) const {
  // @@protoc_insertion_point(field_get:onnx.SparseTensorProto.dims)
  return _internal_dims(index);
}
inline void SparseTensorProto::set_dims(int index, int64_t value) {
  dims_.Set(index, value);
  // @@protoc_insertion_point(field_set:onnx.SparseTensorProto.dims)
}
inline void SparseTensorProto::_internal_add_dims(int64_t value) {
  dims_.Add(value);
}
inline void SparseTensorProto::add_dims(int64_t value) {
  _internal_add_dims(value);
  // @@protoc_insertion_point(field_add:onnx.SparseTensorProto.dims)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
SparseTensorProto::_internal_dims() const {
  return dims_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >&
SparseTensorProto::dims() const {
  // @@protoc_insertion_point(field_list:onnx.SparseTensorProto.dims)
  return _internal_dims();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
SparseTensorProto::_internal_mutable_dims() {
  return &dims_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int64_t >*
SparseTensorProto::mutable_dims() {
  // @@protoc_insertion_point(field_mutable_list:onnx.SparseTensorProto.dims)
  return _internal_mutable_dims();
}

// -------------------------------------------------------------------

// TensorShapeProto_Dimension

// int64 dim_value = 1;
inline bool TensorShapeProto_Dimension::_internal_has_dim_value() const {
  return value_case() == kDimValue;
}
inline bool TensorShapeProto_Dimension::has_dim_value() const {
  return _internal_has_dim_value();
}
inline void TensorShapeProto_Dimension::set_has_dim_value() {
  _oneof_case_[0] = kDimValue;
}
inline void TensorShapeProto_Dimension::clear_dim_value() {
  if (_internal_has_dim_value()) {
    value_.dim_value_ = int64_t{0};
    clear_has_value();
  }
}
inline int64_t TensorShapeProto_Dimension::_internal_dim_value() const {
  if (_internal_has_dim_value()) {
    return value_.dim_value_;
  }
  return int64_t{0};
}
inline void TensorShapeProto_Dimension::_internal_set_dim_value(int64_t value) {
  if (!_internal_has_dim_value()) {
    clear_value();
    set_has_dim_value();
  }
  value_.dim_value_ = value;
}
inline int64_t TensorShapeProto_Dimension::dim_value() const {
  // @@protoc_insertion_point(field_get:onnx.TensorShapeProto.Dimension.dim_value)
  return _internal_dim_value();
}
inline void TensorShapeProto_Dimension::set_dim_value(int64_t value) {
  _internal_set_dim_value(value);
  // @@protoc_insertion_point(field_set:onnx.TensorShapeProto.Dimension.dim_value)
}

// string dim_param = 2;
inline bool TensorShapeProto_Dimension::_internal_has_dim_param() const {
  return value_case() == kDimParam;
}
inline bool TensorShapeProto_Dimension::has_dim_param() const {
  return _internal_has_dim_param();
}
inline void TensorShapeProto_Dimension::set_has_dim_param() {
  _oneof_case_[0] = kDimParam;
}
inline void TensorShapeProto_Dimension::clear_dim_param() {
  if (_internal_has_dim_param()) {
    value_.dim_param_.Destroy(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
    clear_has_value();
  }
}
inline const std::string& TensorShapeProto_Dimension::dim_param() const {
  // @@protoc_insertion_point(field_get:onnx.TensorShapeProto.Dimension.dim_param)
  return _internal_dim_param();
}
template <typename ArgT0, typename... ArgT>
inline void TensorShapeProto_Dimension::set_dim_param(ArgT0&& arg0, ArgT... args) {
  if (!_internal_has_dim_param()) {
    clear_value();
    set_has_dim_param();
    value_.dim_param_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  value_.dim_param_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.TensorShapeProto.Dimension.dim_param)
}
inline std::string* TensorShapeProto_Dimension::mutable_dim_param() {
  std::string* _s = _internal_mutable_dim_param();
  // @@protoc_insertion_point(field_mutable:onnx.TensorShapeProto.Dimension.dim_param)
  return _s;
}
inline const std::string& TensorShapeProto_Dimension::_internal_dim_param() const {
  if (_internal_has_dim_param()) {
    return value_.dim_param_.Get();
  }
  return ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited();
}
inline void TensorShapeProto_Dimension::_internal_set_dim_param(const std::string& value) {
  if (!_internal_has_dim_param()) {
    clear_value();
    set_has_dim_param();
    value_.dim_param_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  value_.dim_param_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* TensorShapeProto_Dimension::_internal_mutable_dim_param() {
  if (!_internal_has_dim_param()) {
    clear_value();
    set_has_dim_param();
    value_.dim_param_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  }
  return value_.dim_param_.Mutable(
      ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* TensorShapeProto_Dimension::release_dim_param() {
  // @@protoc_insertion_point(field_release:onnx.TensorShapeProto.Dimension.dim_param)
  if (_internal_has_dim_param()) {
    clear_has_value();
    return value_.dim_param_.ReleaseNonDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
  } else {
    return nullptr;
  }
}
inline void TensorShapeProto_Dimension::set_allocated_dim_param(std::string* dim_param) {
  if (has_value()) {
    clear_value();
  }
  if (dim_param != nullptr) {
    set_has_dim_param();
    value_.dim_param_.UnsafeSetDefault(dim_param);
    ::PROTOBUF_NAMESPACE_ID::Arena* arena = GetArenaForAllocation();
    if (arena != nullptr) {
      arena->Own(dim_param);
    }
  }
  // @@protoc_insertion_point(field_set_allocated:onnx.TensorShapeProto.Dimension.dim_param)
}

// string denotation = 3;
inline void TensorShapeProto_Dimension::clear_denotation() {
  denotation_.ClearToEmpty();
}
inline const std::string& TensorShapeProto_Dimension::denotation() const {
  // @@protoc_insertion_point(field_get:onnx.TensorShapeProto.Dimension.denotation)
  return _internal_denotation();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TensorShapeProto_Dimension::set_denotation(ArgT0&& arg0, ArgT... args) {
 
 denotation_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.TensorShapeProto.Dimension.denotation)
}
inline std::string* TensorShapeProto_Dimension::mutable_denotation() {
  std::string* _s = _internal_mutable_denotation();
  // @@protoc_insertion_point(field_mutable:onnx.TensorShapeProto.Dimension.denotation)
  return _s;
}
inline const std::string& TensorShapeProto_Dimension::_internal_denotation() const {
  return denotation_.Get();
}
inline void TensorShapeProto_Dimension::_internal_set_denotation(const std::string& value) {
  
  denotation_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* TensorShapeProto_Dimension::_internal_mutable_denotation() {
  
  return denotation_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* TensorShapeProto_Dimension::release_denotation() {
  // @@protoc_insertion_point(field_release:onnx.TensorShapeProto.Dimension.denotation)
  return denotation_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void TensorShapeProto_Dimension::set_allocated_denotation(std::string* denotation) {
  if (denotation != nullptr) {
    
  } else {
    
  }
  denotation_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), denotation,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (denotation_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    denotation_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.TensorShapeProto.Dimension.denotation)
}

inline bool TensorShapeProto_Dimension::has_value() const {
  return value_case() != VALUE_NOT_SET;
}
inline void TensorShapeProto_Dimension::clear_has_value() {
  _oneof_case_[0] = VALUE_NOT_SET;
}
inline TensorShapeProto_Dimension::ValueCase TensorShapeProto_Dimension::value_case() const {
  return TensorShapeProto_Dimension::ValueCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// TensorShapeProto

// repeated .onnx.TensorShapeProto.Dimension dim = 1;
inline int TensorShapeProto::_internal_dim_size() const {
  return dim_.size();
}
inline int TensorShapeProto::dim_size() const {
  return _internal_dim_size();
}
inline void TensorShapeProto::clear_dim() {
  dim_.Clear();
}
inline ::onnx::TensorShapeProto_Dimension* TensorShapeProto::mutable_dim(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.TensorShapeProto.dim)
  return dim_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorShapeProto_Dimension >*
TensorShapeProto::mutable_dim() {
  // @@protoc_insertion_point(field_mutable_list:onnx.TensorShapeProto.dim)
  return &dim_;
}
inline const ::onnx::TensorShapeProto_Dimension& TensorShapeProto::_internal_dim(int index) const {
  return dim_.Get(index);
}
inline const ::onnx::TensorShapeProto_Dimension& TensorShapeProto::dim(int index) const {
  // @@protoc_insertion_point(field_get:onnx.TensorShapeProto.dim)
  return _internal_dim(index);
}
inline ::onnx::TensorShapeProto_Dimension* TensorShapeProto::_internal_add_dim() {
  return dim_.Add();
}
inline ::onnx::TensorShapeProto_Dimension* TensorShapeProto::add_dim() {
  ::onnx::TensorShapeProto_Dimension* _add = _internal_add_dim();
  // @@protoc_insertion_point(field_add:onnx.TensorShapeProto.dim)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::TensorShapeProto_Dimension >&
TensorShapeProto::dim() const {
  // @@protoc_insertion_point(field_list:onnx.TensorShapeProto.dim)
  return dim_;
}

// -------------------------------------------------------------------

// TypeProto_Tensor

// int32 elem_type = 1;
inline void TypeProto_Tensor::clear_elem_type() {
  elem_type_ = 0;
}
inline int32_t TypeProto_Tensor::_internal_elem_type() const {
  return elem_type_;
}
inline int32_t TypeProto_Tensor::elem_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.Tensor.elem_type)
  return _internal_elem_type();
}
inline void TypeProto_Tensor::_internal_set_elem_type(int32_t value) {
  
  elem_type_ = value;
}
inline void TypeProto_Tensor::set_elem_type(int32_t value) {
  _internal_set_elem_type(value);
  // @@protoc_insertion_point(field_set:onnx.TypeProto.Tensor.elem_type)
}

// .onnx.TensorShapeProto shape = 2;
inline bool TypeProto_Tensor::_internal_has_shape() const {
  return this != internal_default_instance() && shape_ != nullptr;
}
inline bool TypeProto_Tensor::has_shape() const {
  return _internal_has_shape();
}
inline void TypeProto_Tensor::clear_shape() {
  if (GetArenaForAllocation() == nullptr && shape_ != nullptr) {
    delete shape_;
  }
  shape_ = nullptr;
}
inline const ::onnx::TensorShapeProto& TypeProto_Tensor::_internal_shape() const {
  const ::onnx::TensorShapeProto* p = shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TensorShapeProto&>(
      ::onnx::_TensorShapeProto_default_instance_);
}
inline const ::onnx::TensorShapeProto& TypeProto_Tensor::shape() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.Tensor.shape)
  return _internal_shape();
}
inline void TypeProto_Tensor::unsafe_arena_set_allocated_shape(
    ::onnx::TensorShapeProto* shape) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(shape_);
  }
  shape_ = shape;
  if (shape) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.Tensor.shape)
}
inline ::onnx::TensorShapeProto* TypeProto_Tensor::release_shape() {
  
  ::onnx::TensorShapeProto* temp = shape_;
  shape_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TensorShapeProto* TypeProto_Tensor::unsafe_arena_release_shape() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.Tensor.shape)
  
  ::onnx::TensorShapeProto* temp = shape_;
  shape_ = nullptr;
  return temp;
}
inline ::onnx::TensorShapeProto* TypeProto_Tensor::_internal_mutable_shape() {
  
  if (shape_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TensorShapeProto>(GetArenaForAllocation());
    shape_ = p;
  }
  return shape_;
}
inline ::onnx::TensorShapeProto* TypeProto_Tensor::mutable_shape() {
  ::onnx::TensorShapeProto* _msg = _internal_mutable_shape();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.Tensor.shape)
  return _msg;
}
inline void TypeProto_Tensor::set_allocated_shape(::onnx::TensorShapeProto* shape) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete shape_;
  }
  if (shape) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TensorShapeProto>::GetOwningArena(shape);
    if (message_arena != submessage_arena) {
      shape = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, shape, submessage_arena);
    }
    
  } else {
    
  }
  shape_ = shape;
  // @@protoc_insertion_point(field_set_allocated:onnx.TypeProto.Tensor.shape)
}

// -------------------------------------------------------------------

// TypeProto_Sequence

// .onnx.TypeProto elem_type = 1;
inline bool TypeProto_Sequence::_internal_has_elem_type() const {
  return this != internal_default_instance() && elem_type_ != nullptr;
}
inline bool TypeProto_Sequence::has_elem_type() const {
  return _internal_has_elem_type();
}
inline void TypeProto_Sequence::clear_elem_type() {
  if (GetArenaForAllocation() == nullptr && elem_type_ != nullptr) {
    delete elem_type_;
  }
  elem_type_ = nullptr;
}
inline const ::onnx::TypeProto& TypeProto_Sequence::_internal_elem_type() const {
  const ::onnx::TypeProto* p = elem_type_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TypeProto&>(
      ::onnx::_TypeProto_default_instance_);
}
inline const ::onnx::TypeProto& TypeProto_Sequence::elem_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.Sequence.elem_type)
  return _internal_elem_type();
}
inline void TypeProto_Sequence::unsafe_arena_set_allocated_elem_type(
    ::onnx::TypeProto* elem_type) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(elem_type_);
  }
  elem_type_ = elem_type;
  if (elem_type) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.Sequence.elem_type)
}
inline ::onnx::TypeProto* TypeProto_Sequence::release_elem_type() {
  
  ::onnx::TypeProto* temp = elem_type_;
  elem_type_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TypeProto* TypeProto_Sequence::unsafe_arena_release_elem_type() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.Sequence.elem_type)
  
  ::onnx::TypeProto* temp = elem_type_;
  elem_type_ = nullptr;
  return temp;
}
inline ::onnx::TypeProto* TypeProto_Sequence::_internal_mutable_elem_type() {
  
  if (elem_type_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TypeProto>(GetArenaForAllocation());
    elem_type_ = p;
  }
  return elem_type_;
}
inline ::onnx::TypeProto* TypeProto_Sequence::mutable_elem_type() {
  ::onnx::TypeProto* _msg = _internal_mutable_elem_type();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.Sequence.elem_type)
  return _msg;
}
inline void TypeProto_Sequence::set_allocated_elem_type(::onnx::TypeProto* elem_type) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete elem_type_;
  }
  if (elem_type) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TypeProto>::GetOwningArena(elem_type);
    if (message_arena != submessage_arena) {
      elem_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, elem_type, submessage_arena);
    }
    
  } else {
    
  }
  elem_type_ = elem_type;
  // @@protoc_insertion_point(field_set_allocated:onnx.TypeProto.Sequence.elem_type)
}

// -------------------------------------------------------------------

// TypeProto_Map

// int32 key_type = 1;
inline void TypeProto_Map::clear_key_type() {
  key_type_ = 0;
}
inline int32_t TypeProto_Map::_internal_key_type() const {
  return key_type_;
}
inline int32_t TypeProto_Map::key_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.Map.key_type)
  return _internal_key_type();
}
inline void TypeProto_Map::_internal_set_key_type(int32_t value) {
  
  key_type_ = value;
}
inline void TypeProto_Map::set_key_type(int32_t value) {
  _internal_set_key_type(value);
  // @@protoc_insertion_point(field_set:onnx.TypeProto.Map.key_type)
}

// .onnx.TypeProto value_type = 2;
inline bool TypeProto_Map::_internal_has_value_type() const {
  return this != internal_default_instance() && value_type_ != nullptr;
}
inline bool TypeProto_Map::has_value_type() const {
  return _internal_has_value_type();
}
inline void TypeProto_Map::clear_value_type() {
  if (GetArenaForAllocation() == nullptr && value_type_ != nullptr) {
    delete value_type_;
  }
  value_type_ = nullptr;
}
inline const ::onnx::TypeProto& TypeProto_Map::_internal_value_type() const {
  const ::onnx::TypeProto* p = value_type_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TypeProto&>(
      ::onnx::_TypeProto_default_instance_);
}
inline const ::onnx::TypeProto& TypeProto_Map::value_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.Map.value_type)
  return _internal_value_type();
}
inline void TypeProto_Map::unsafe_arena_set_allocated_value_type(
    ::onnx::TypeProto* value_type) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(value_type_);
  }
  value_type_ = value_type;
  if (value_type) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.Map.value_type)
}
inline ::onnx::TypeProto* TypeProto_Map::release_value_type() {
  
  ::onnx::TypeProto* temp = value_type_;
  value_type_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TypeProto* TypeProto_Map::unsafe_arena_release_value_type() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.Map.value_type)
  
  ::onnx::TypeProto* temp = value_type_;
  value_type_ = nullptr;
  return temp;
}
inline ::onnx::TypeProto* TypeProto_Map::_internal_mutable_value_type() {
  
  if (value_type_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TypeProto>(GetArenaForAllocation());
    value_type_ = p;
  }
  return value_type_;
}
inline ::onnx::TypeProto* TypeProto_Map::mutable_value_type() {
  ::onnx::TypeProto* _msg = _internal_mutable_value_type();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.Map.value_type)
  return _msg;
}
inline void TypeProto_Map::set_allocated_value_type(::onnx::TypeProto* value_type) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete value_type_;
  }
  if (value_type) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TypeProto>::GetOwningArena(value_type);
    if (message_arena != submessage_arena) {
      value_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, value_type, submessage_arena);
    }
    
  } else {
    
  }
  value_type_ = value_type;
  // @@protoc_insertion_point(field_set_allocated:onnx.TypeProto.Map.value_type)
}

// -------------------------------------------------------------------

// TypeProto_Optional

// .onnx.TypeProto elem_type = 1;
inline bool TypeProto_Optional::_internal_has_elem_type() const {
  return this != internal_default_instance() && elem_type_ != nullptr;
}
inline bool TypeProto_Optional::has_elem_type() const {
  return _internal_has_elem_type();
}
inline void TypeProto_Optional::clear_elem_type() {
  if (GetArenaForAllocation() == nullptr && elem_type_ != nullptr) {
    delete elem_type_;
  }
  elem_type_ = nullptr;
}
inline const ::onnx::TypeProto& TypeProto_Optional::_internal_elem_type() const {
  const ::onnx::TypeProto* p = elem_type_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TypeProto&>(
      ::onnx::_TypeProto_default_instance_);
}
inline const ::onnx::TypeProto& TypeProto_Optional::elem_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.Optional.elem_type)
  return _internal_elem_type();
}
inline void TypeProto_Optional::unsafe_arena_set_allocated_elem_type(
    ::onnx::TypeProto* elem_type) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(elem_type_);
  }
  elem_type_ = elem_type;
  if (elem_type) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.Optional.elem_type)
}
inline ::onnx::TypeProto* TypeProto_Optional::release_elem_type() {
  
  ::onnx::TypeProto* temp = elem_type_;
  elem_type_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TypeProto* TypeProto_Optional::unsafe_arena_release_elem_type() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.Optional.elem_type)
  
  ::onnx::TypeProto* temp = elem_type_;
  elem_type_ = nullptr;
  return temp;
}
inline ::onnx::TypeProto* TypeProto_Optional::_internal_mutable_elem_type() {
  
  if (elem_type_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TypeProto>(GetArenaForAllocation());
    elem_type_ = p;
  }
  return elem_type_;
}
inline ::onnx::TypeProto* TypeProto_Optional::mutable_elem_type() {
  ::onnx::TypeProto* _msg = _internal_mutable_elem_type();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.Optional.elem_type)
  return _msg;
}
inline void TypeProto_Optional::set_allocated_elem_type(::onnx::TypeProto* elem_type) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete elem_type_;
  }
  if (elem_type) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TypeProto>::GetOwningArena(elem_type);
    if (message_arena != submessage_arena) {
      elem_type = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, elem_type, submessage_arena);
    }
    
  } else {
    
  }
  elem_type_ = elem_type;
  // @@protoc_insertion_point(field_set_allocated:onnx.TypeProto.Optional.elem_type)
}

// -------------------------------------------------------------------

// TypeProto_SparseTensor

// int32 elem_type = 1;
inline void TypeProto_SparseTensor::clear_elem_type() {
  elem_type_ = 0;
}
inline int32_t TypeProto_SparseTensor::_internal_elem_type() const {
  return elem_type_;
}
inline int32_t TypeProto_SparseTensor::elem_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.SparseTensor.elem_type)
  return _internal_elem_type();
}
inline void TypeProto_SparseTensor::_internal_set_elem_type(int32_t value) {
  
  elem_type_ = value;
}
inline void TypeProto_SparseTensor::set_elem_type(int32_t value) {
  _internal_set_elem_type(value);
  // @@protoc_insertion_point(field_set:onnx.TypeProto.SparseTensor.elem_type)
}

// .onnx.TensorShapeProto shape = 2;
inline bool TypeProto_SparseTensor::_internal_has_shape() const {
  return this != internal_default_instance() && shape_ != nullptr;
}
inline bool TypeProto_SparseTensor::has_shape() const {
  return _internal_has_shape();
}
inline void TypeProto_SparseTensor::clear_shape() {
  if (GetArenaForAllocation() == nullptr && shape_ != nullptr) {
    delete shape_;
  }
  shape_ = nullptr;
}
inline const ::onnx::TensorShapeProto& TypeProto_SparseTensor::_internal_shape() const {
  const ::onnx::TensorShapeProto* p = shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::onnx::TensorShapeProto&>(
      ::onnx::_TensorShapeProto_default_instance_);
}
inline const ::onnx::TensorShapeProto& TypeProto_SparseTensor::shape() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.SparseTensor.shape)
  return _internal_shape();
}
inline void TypeProto_SparseTensor::unsafe_arena_set_allocated_shape(
    ::onnx::TensorShapeProto* shape) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(shape_);
  }
  shape_ = shape;
  if (shape) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.SparseTensor.shape)
}
inline ::onnx::TensorShapeProto* TypeProto_SparseTensor::release_shape() {
  
  ::onnx::TensorShapeProto* temp = shape_;
  shape_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::onnx::TensorShapeProto* TypeProto_SparseTensor::unsafe_arena_release_shape() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.SparseTensor.shape)
  
  ::onnx::TensorShapeProto* temp = shape_;
  shape_ = nullptr;
  return temp;
}
inline ::onnx::TensorShapeProto* TypeProto_SparseTensor::_internal_mutable_shape() {
  
  if (shape_ == nullptr) {
    auto* p = CreateMaybeMessage<::onnx::TensorShapeProto>(GetArenaForAllocation());
    shape_ = p;
  }
  return shape_;
}
inline ::onnx::TensorShapeProto* TypeProto_SparseTensor::mutable_shape() {
  ::onnx::TensorShapeProto* _msg = _internal_mutable_shape();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.SparseTensor.shape)
  return _msg;
}
inline void TypeProto_SparseTensor::set_allocated_shape(::onnx::TensorShapeProto* shape) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete shape_;
  }
  if (shape) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper<::onnx::TensorShapeProto>::GetOwningArena(shape);
    if (message_arena != submessage_arena) {
      shape = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, shape, submessage_arena);
    }
    
  } else {
    
  }
  shape_ = shape;
  // @@protoc_insertion_point(field_set_allocated:onnx.TypeProto.SparseTensor.shape)
}

// -------------------------------------------------------------------

// TypeProto

// .onnx.TypeProto.Tensor tensor_type = 1;
inline bool TypeProto::_internal_has_tensor_type() const {
  return value_case() == kTensorType;
}
inline bool TypeProto::has_tensor_type() const {
  return _internal_has_tensor_type();
}
inline void TypeProto::set_has_tensor_type() {
  _oneof_case_[0] = kTensorType;
}
inline void TypeProto::clear_tensor_type() {
  if (_internal_has_tensor_type()) {
    if (GetArenaForAllocation() == nullptr) {
      delete value_.tensor_type_;
    }
    clear_has_value();
  }
}
inline ::onnx::TypeProto_Tensor* TypeProto::release_tensor_type() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.tensor_type)
  if (_internal_has_tensor_type()) {
    clear_has_value();
      ::onnx::TypeProto_Tensor* temp = value_.tensor_type_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    value_.tensor_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::onnx::TypeProto_Tensor& TypeProto::_internal_tensor_type() const {
  return _internal_has_tensor_type()
      ? *value_.tensor_type_
      : reinterpret_cast< ::onnx::TypeProto_Tensor&>(::onnx::_TypeProto_Tensor_default_instance_);
}
inline const ::onnx::TypeProto_Tensor& TypeProto::tensor_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.tensor_type)
  return _internal_tensor_type();
}
inline ::onnx::TypeProto_Tensor* TypeProto::unsafe_arena_release_tensor_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:onnx.TypeProto.tensor_type)
  if (_internal_has_tensor_type()) {
    clear_has_value();
    ::onnx::TypeProto_Tensor* temp = value_.tensor_type_;
    value_.tensor_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void TypeProto::unsafe_arena_set_allocated_tensor_type(::onnx::TypeProto_Tensor* tensor_type) {
  clear_value();
  if (tensor_type) {
    set_has_tensor_type();
    value_.tensor_type_ = tensor_type;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.tensor_type)
}
inline ::onnx::TypeProto_Tensor* TypeProto::_internal_mutable_tensor_type() {
  if (!_internal_has_tensor_type()) {
    clear_value();
    set_has_tensor_type();
    value_.tensor_type_ = CreateMaybeMessage< ::onnx::TypeProto_Tensor >(GetArenaForAllocation());
  }
  return value_.tensor_type_;
}
inline ::onnx::TypeProto_Tensor* TypeProto::mutable_tensor_type() {
  ::onnx::TypeProto_Tensor* _msg = _internal_mutable_tensor_type();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.tensor_type)
  return _msg;
}

// .onnx.TypeProto.Sequence sequence_type = 4;
inline bool TypeProto::_internal_has_sequence_type() const {
  return value_case() == kSequenceType;
}
inline bool TypeProto::has_sequence_type() const {
  return _internal_has_sequence_type();
}
inline void TypeProto::set_has_sequence_type() {
  _oneof_case_[0] = kSequenceType;
}
inline void TypeProto::clear_sequence_type() {
  if (_internal_has_sequence_type()) {
    if (GetArenaForAllocation() == nullptr) {
      delete value_.sequence_type_;
    }
    clear_has_value();
  }
}
inline ::onnx::TypeProto_Sequence* TypeProto::release_sequence_type() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.sequence_type)
  if (_internal_has_sequence_type()) {
    clear_has_value();
      ::onnx::TypeProto_Sequence* temp = value_.sequence_type_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    value_.sequence_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::onnx::TypeProto_Sequence& TypeProto::_internal_sequence_type() const {
  return _internal_has_sequence_type()
      ? *value_.sequence_type_
      : reinterpret_cast< ::onnx::TypeProto_Sequence&>(::onnx::_TypeProto_Sequence_default_instance_);
}
inline const ::onnx::TypeProto_Sequence& TypeProto::sequence_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.sequence_type)
  return _internal_sequence_type();
}
inline ::onnx::TypeProto_Sequence* TypeProto::unsafe_arena_release_sequence_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:onnx.TypeProto.sequence_type)
  if (_internal_has_sequence_type()) {
    clear_has_value();
    ::onnx::TypeProto_Sequence* temp = value_.sequence_type_;
    value_.sequence_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void TypeProto::unsafe_arena_set_allocated_sequence_type(::onnx::TypeProto_Sequence* sequence_type) {
  clear_value();
  if (sequence_type) {
    set_has_sequence_type();
    value_.sequence_type_ = sequence_type;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.sequence_type)
}
inline ::onnx::TypeProto_Sequence* TypeProto::_internal_mutable_sequence_type() {
  if (!_internal_has_sequence_type()) {
    clear_value();
    set_has_sequence_type();
    value_.sequence_type_ = CreateMaybeMessage< ::onnx::TypeProto_Sequence >(GetArenaForAllocation());
  }
  return value_.sequence_type_;
}
inline ::onnx::TypeProto_Sequence* TypeProto::mutable_sequence_type() {
  ::onnx::TypeProto_Sequence* _msg = _internal_mutable_sequence_type();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.sequence_type)
  return _msg;
}

// .onnx.TypeProto.Map map_type = 5;
inline bool TypeProto::_internal_has_map_type() const {
  return value_case() == kMapType;
}
inline bool TypeProto::has_map_type() const {
  return _internal_has_map_type();
}
inline void TypeProto::set_has_map_type() {
  _oneof_case_[0] = kMapType;
}
inline void TypeProto::clear_map_type() {
  if (_internal_has_map_type()) {
    if (GetArenaForAllocation() == nullptr) {
      delete value_.map_type_;
    }
    clear_has_value();
  }
}
inline ::onnx::TypeProto_Map* TypeProto::release_map_type() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.map_type)
  if (_internal_has_map_type()) {
    clear_has_value();
      ::onnx::TypeProto_Map* temp = value_.map_type_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    value_.map_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::onnx::TypeProto_Map& TypeProto::_internal_map_type() const {
  return _internal_has_map_type()
      ? *value_.map_type_
      : reinterpret_cast< ::onnx::TypeProto_Map&>(::onnx::_TypeProto_Map_default_instance_);
}
inline const ::onnx::TypeProto_Map& TypeProto::map_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.map_type)
  return _internal_map_type();
}
inline ::onnx::TypeProto_Map* TypeProto::unsafe_arena_release_map_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:onnx.TypeProto.map_type)
  if (_internal_has_map_type()) {
    clear_has_value();
    ::onnx::TypeProto_Map* temp = value_.map_type_;
    value_.map_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void TypeProto::unsafe_arena_set_allocated_map_type(::onnx::TypeProto_Map* map_type) {
  clear_value();
  if (map_type) {
    set_has_map_type();
    value_.map_type_ = map_type;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.map_type)
}
inline ::onnx::TypeProto_Map* TypeProto::_internal_mutable_map_type() {
  if (!_internal_has_map_type()) {
    clear_value();
    set_has_map_type();
    value_.map_type_ = CreateMaybeMessage< ::onnx::TypeProto_Map >(GetArenaForAllocation());
  }
  return value_.map_type_;
}
inline ::onnx::TypeProto_Map* TypeProto::mutable_map_type() {
  ::onnx::TypeProto_Map* _msg = _internal_mutable_map_type();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.map_type)
  return _msg;
}

// .onnx.TypeProto.Optional optional_type = 9;
inline bool TypeProto::_internal_has_optional_type() const {
  return value_case() == kOptionalType;
}
inline bool TypeProto::has_optional_type() const {
  return _internal_has_optional_type();
}
inline void TypeProto::set_has_optional_type() {
  _oneof_case_[0] = kOptionalType;
}
inline void TypeProto::clear_optional_type() {
  if (_internal_has_optional_type()) {
    if (GetArenaForAllocation() == nullptr) {
      delete value_.optional_type_;
    }
    clear_has_value();
  }
}
inline ::onnx::TypeProto_Optional* TypeProto::release_optional_type() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.optional_type)
  if (_internal_has_optional_type()) {
    clear_has_value();
      ::onnx::TypeProto_Optional* temp = value_.optional_type_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    value_.optional_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::onnx::TypeProto_Optional& TypeProto::_internal_optional_type() const {
  return _internal_has_optional_type()
      ? *value_.optional_type_
      : reinterpret_cast< ::onnx::TypeProto_Optional&>(::onnx::_TypeProto_Optional_default_instance_);
}
inline const ::onnx::TypeProto_Optional& TypeProto::optional_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.optional_type)
  return _internal_optional_type();
}
inline ::onnx::TypeProto_Optional* TypeProto::unsafe_arena_release_optional_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:onnx.TypeProto.optional_type)
  if (_internal_has_optional_type()) {
    clear_has_value();
    ::onnx::TypeProto_Optional* temp = value_.optional_type_;
    value_.optional_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void TypeProto::unsafe_arena_set_allocated_optional_type(::onnx::TypeProto_Optional* optional_type) {
  clear_value();
  if (optional_type) {
    set_has_optional_type();
    value_.optional_type_ = optional_type;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.optional_type)
}
inline ::onnx::TypeProto_Optional* TypeProto::_internal_mutable_optional_type() {
  if (!_internal_has_optional_type()) {
    clear_value();
    set_has_optional_type();
    value_.optional_type_ = CreateMaybeMessage< ::onnx::TypeProto_Optional >(GetArenaForAllocation());
  }
  return value_.optional_type_;
}
inline ::onnx::TypeProto_Optional* TypeProto::mutable_optional_type() {
  ::onnx::TypeProto_Optional* _msg = _internal_mutable_optional_type();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.optional_type)
  return _msg;
}

// .onnx.TypeProto.SparseTensor sparse_tensor_type = 8;
inline bool TypeProto::_internal_has_sparse_tensor_type() const {
  return value_case() == kSparseTensorType;
}
inline bool TypeProto::has_sparse_tensor_type() const {
  return _internal_has_sparse_tensor_type();
}
inline void TypeProto::set_has_sparse_tensor_type() {
  _oneof_case_[0] = kSparseTensorType;
}
inline void TypeProto::clear_sparse_tensor_type() {
  if (_internal_has_sparse_tensor_type()) {
    if (GetArenaForAllocation() == nullptr) {
      delete value_.sparse_tensor_type_;
    }
    clear_has_value();
  }
}
inline ::onnx::TypeProto_SparseTensor* TypeProto::release_sparse_tensor_type() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.sparse_tensor_type)
  if (_internal_has_sparse_tensor_type()) {
    clear_has_value();
      ::onnx::TypeProto_SparseTensor* temp = value_.sparse_tensor_type_;
    if (GetArenaForAllocation() != nullptr) {
      temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
    }
    value_.sparse_tensor_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::onnx::TypeProto_SparseTensor& TypeProto::_internal_sparse_tensor_type() const {
  return _internal_has_sparse_tensor_type()
      ? *value_.sparse_tensor_type_
      : reinterpret_cast< ::onnx::TypeProto_SparseTensor&>(::onnx::_TypeProto_SparseTensor_default_instance_);
}
inline const ::onnx::TypeProto_SparseTensor& TypeProto::sparse_tensor_type() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.sparse_tensor_type)
  return _internal_sparse_tensor_type();
}
inline ::onnx::TypeProto_SparseTensor* TypeProto::unsafe_arena_release_sparse_tensor_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:onnx.TypeProto.sparse_tensor_type)
  if (_internal_has_sparse_tensor_type()) {
    clear_has_value();
    ::onnx::TypeProto_SparseTensor* temp = value_.sparse_tensor_type_;
    value_.sparse_tensor_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void TypeProto::unsafe_arena_set_allocated_sparse_tensor_type(::onnx::TypeProto_SparseTensor* sparse_tensor_type) {
  clear_value();
  if (sparse_tensor_type) {
    set_has_sparse_tensor_type();
    value_.sparse_tensor_type_ = sparse_tensor_type;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:onnx.TypeProto.sparse_tensor_type)
}
inline ::onnx::TypeProto_SparseTensor* TypeProto::_internal_mutable_sparse_tensor_type() {
  if (!_internal_has_sparse_tensor_type()) {
    clear_value();
    set_has_sparse_tensor_type();
    value_.sparse_tensor_type_ = CreateMaybeMessage< ::onnx::TypeProto_SparseTensor >(GetArenaForAllocation());
  }
  return value_.sparse_tensor_type_;
}
inline ::onnx::TypeProto_SparseTensor* TypeProto::mutable_sparse_tensor_type() {
  ::onnx::TypeProto_SparseTensor* _msg = _internal_mutable_sparse_tensor_type();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.sparse_tensor_type)
  return _msg;
}

// string denotation = 6;
inline void TypeProto::clear_denotation() {
  denotation_.ClearToEmpty();
}
inline const std::string& TypeProto::denotation() const {
  // @@protoc_insertion_point(field_get:onnx.TypeProto.denotation)
  return _internal_denotation();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void TypeProto::set_denotation(ArgT0&& arg0, ArgT... args) {
 
 denotation_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.TypeProto.denotation)
}
inline std::string* TypeProto::mutable_denotation() {
  std::string* _s = _internal_mutable_denotation();
  // @@protoc_insertion_point(field_mutable:onnx.TypeProto.denotation)
  return _s;
}
inline const std::string& TypeProto::_internal_denotation() const {
  return denotation_.Get();
}
inline void TypeProto::_internal_set_denotation(const std::string& value) {
  
  denotation_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* TypeProto::_internal_mutable_denotation() {
  
  return denotation_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* TypeProto::release_denotation() {
  // @@protoc_insertion_point(field_release:onnx.TypeProto.denotation)
  return denotation_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void TypeProto::set_allocated_denotation(std::string* denotation) {
  if (denotation != nullptr) {
    
  } else {
    
  }
  denotation_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), denotation,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (denotation_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    denotation_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.TypeProto.denotation)
}

inline bool TypeProto::has_value() const {
  return value_case() != VALUE_NOT_SET;
}
inline void TypeProto::clear_has_value() {
  _oneof_case_[0] = VALUE_NOT_SET;
}
inline TypeProto::ValueCase TypeProto::value_case() const {
  return TypeProto::ValueCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// OperatorSetIdProto

// string domain = 1;
inline void OperatorSetIdProto::clear_domain() {
  domain_.ClearToEmpty();
}
inline const std::string& OperatorSetIdProto::domain() const {
  // @@protoc_insertion_point(field_get:onnx.OperatorSetIdProto.domain)
  return _internal_domain();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void OperatorSetIdProto::set_domain(ArgT0&& arg0, ArgT... args) {
 
 domain_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.OperatorSetIdProto.domain)
}
inline std::string* OperatorSetIdProto::mutable_domain() {
  std::string* _s = _internal_mutable_domain();
  // @@protoc_insertion_point(field_mutable:onnx.OperatorSetIdProto.domain)
  return _s;
}
inline const std::string& OperatorSetIdProto::_internal_domain() const {
  return domain_.Get();
}
inline void OperatorSetIdProto::_internal_set_domain(const std::string& value) {
  
  domain_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* OperatorSetIdProto::_internal_mutable_domain() {
  
  return domain_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* OperatorSetIdProto::release_domain() {
  // @@protoc_insertion_point(field_release:onnx.OperatorSetIdProto.domain)
  return domain_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void OperatorSetIdProto::set_allocated_domain(std::string* domain) {
  if (domain != nullptr) {
    
  } else {
    
  }
  domain_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), domain,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (domain_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    domain_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.OperatorSetIdProto.domain)
}

// int64 version = 2;
inline void OperatorSetIdProto::clear_version() {
  version_ = int64_t{0};
}
inline int64_t OperatorSetIdProto::_internal_version() const {
  return version_;
}
inline int64_t OperatorSetIdProto::version() const {
  // @@protoc_insertion_point(field_get:onnx.OperatorSetIdProto.version)
  return _internal_version();
}
inline void OperatorSetIdProto::_internal_set_version(int64_t value) {
  
  version_ = value;
}
inline void OperatorSetIdProto::set_version(int64_t value) {
  _internal_set_version(value);
  // @@protoc_insertion_point(field_set:onnx.OperatorSetIdProto.version)
}

// -------------------------------------------------------------------

// FunctionProto

// string name = 1;
inline void FunctionProto::clear_name() {
  name_.ClearToEmpty();
}
inline const std::string& FunctionProto::name() const {
  // @@protoc_insertion_point(field_get:onnx.FunctionProto.name)
  return _internal_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FunctionProto::set_name(ArgT0&& arg0, ArgT... args) {
 
 name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.FunctionProto.name)
}
inline std::string* FunctionProto::mutable_name() {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:onnx.FunctionProto.name)
  return _s;
}
inline const std::string& FunctionProto::_internal_name() const {
  return name_.Get();
}
inline void FunctionProto::_internal_set_name(const std::string& value) {
  
  name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* FunctionProto::_internal_mutable_name() {
  
  return name_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* FunctionProto::release_name() {
  // @@protoc_insertion_point(field_release:onnx.FunctionProto.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void FunctionProto::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (name_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.FunctionProto.name)
}

// repeated string input = 4;
inline int FunctionProto::_internal_input_size() const {
  return input_.size();
}
inline int FunctionProto::input_size() const {
  return _internal_input_size();
}
inline void FunctionProto::clear_input() {
  input_.Clear();
}
inline std::string* FunctionProto::add_input() {
  std::string* _s = _internal_add_input();
  // @@protoc_insertion_point(field_add_mutable:onnx.FunctionProto.input)
  return _s;
}
inline const std::string& FunctionProto::_internal_input(int index) const {
  return input_.Get(index);
}
inline const std::string& FunctionProto::input(int index) const {
  // @@protoc_insertion_point(field_get:onnx.FunctionProto.input)
  return _internal_input(index);
}
inline std::string* FunctionProto::mutable_input(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.FunctionProto.input)
  return input_.Mutable(index);
}
inline void FunctionProto::set_input(int index, const std::string& value) {
  input_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:onnx.FunctionProto.input)
}
inline void FunctionProto::set_input(int index, std::string&& value) {
  input_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:onnx.FunctionProto.input)
}
inline void FunctionProto::set_input(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  input_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:onnx.FunctionProto.input)
}
inline void FunctionProto::set_input(int index, const char* value, size_t size) {
  input_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:onnx.FunctionProto.input)
}
inline std::string* FunctionProto::_internal_add_input() {
  return input_.Add();
}
inline void FunctionProto::add_input(const std::string& value) {
  input_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:onnx.FunctionProto.input)
}
inline void FunctionProto::add_input(std::string&& value) {
  input_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:onnx.FunctionProto.input)
}
inline void FunctionProto::add_input(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  input_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:onnx.FunctionProto.input)
}
inline void FunctionProto::add_input(const char* value, size_t size) {
  input_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:onnx.FunctionProto.input)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
FunctionProto::input() const {
  // @@protoc_insertion_point(field_list:onnx.FunctionProto.input)
  return input_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
FunctionProto::mutable_input() {
  // @@protoc_insertion_point(field_mutable_list:onnx.FunctionProto.input)
  return &input_;
}

// repeated string output = 5;
inline int FunctionProto::_internal_output_size() const {
  return output_.size();
}
inline int FunctionProto::output_size() const {
  return _internal_output_size();
}
inline void FunctionProto::clear_output() {
  output_.Clear();
}
inline std::string* FunctionProto::add_output() {
  std::string* _s = _internal_add_output();
  // @@protoc_insertion_point(field_add_mutable:onnx.FunctionProto.output)
  return _s;
}
inline const std::string& FunctionProto::_internal_output(int index) const {
  return output_.Get(index);
}
inline const std::string& FunctionProto::output(int index) const {
  // @@protoc_insertion_point(field_get:onnx.FunctionProto.output)
  return _internal_output(index);
}
inline std::string* FunctionProto::mutable_output(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.FunctionProto.output)
  return output_.Mutable(index);
}
inline void FunctionProto::set_output(int index, const std::string& value) {
  output_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:onnx.FunctionProto.output)
}
inline void FunctionProto::set_output(int index, std::string&& value) {
  output_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:onnx.FunctionProto.output)
}
inline void FunctionProto::set_output(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  output_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:onnx.FunctionProto.output)
}
inline void FunctionProto::set_output(int index, const char* value, size_t size) {
  output_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:onnx.FunctionProto.output)
}
inline std::string* FunctionProto::_internal_add_output() {
  return output_.Add();
}
inline void FunctionProto::add_output(const std::string& value) {
  output_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:onnx.FunctionProto.output)
}
inline void FunctionProto::add_output(std::string&& value) {
  output_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:onnx.FunctionProto.output)
}
inline void FunctionProto::add_output(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  output_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:onnx.FunctionProto.output)
}
inline void FunctionProto::add_output(const char* value, size_t size) {
  output_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:onnx.FunctionProto.output)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
FunctionProto::output() const {
  // @@protoc_insertion_point(field_list:onnx.FunctionProto.output)
  return output_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
FunctionProto::mutable_output() {
  // @@protoc_insertion_point(field_mutable_list:onnx.FunctionProto.output)
  return &output_;
}

// repeated string attribute = 6;
inline int FunctionProto::_internal_attribute_size() const {
  return attribute_.size();
}
inline int FunctionProto::attribute_size() const {
  return _internal_attribute_size();
}
inline void FunctionProto::clear_attribute() {
  attribute_.Clear();
}
inline std::string* FunctionProto::add_attribute() {
  std::string* _s = _internal_add_attribute();
  // @@protoc_insertion_point(field_add_mutable:onnx.FunctionProto.attribute)
  return _s;
}
inline const std::string& FunctionProto::_internal_attribute(int index) const {
  return attribute_.Get(index);
}
inline const std::string& FunctionProto::attribute(int index) const {
  // @@protoc_insertion_point(field_get:onnx.FunctionProto.attribute)
  return _internal_attribute(index);
}
inline std::string* FunctionProto::mutable_attribute(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.FunctionProto.attribute)
  return attribute_.Mutable(index);
}
inline void FunctionProto::set_attribute(int index, const std::string& value) {
  attribute_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:onnx.FunctionProto.attribute)
}
inline void FunctionProto::set_attribute(int index, std::string&& value) {
  attribute_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:onnx.FunctionProto.attribute)
}
inline void FunctionProto::set_attribute(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  attribute_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:onnx.FunctionProto.attribute)
}
inline void FunctionProto::set_attribute(int index, const char* value, size_t size) {
  attribute_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:onnx.FunctionProto.attribute)
}
inline std::string* FunctionProto::_internal_add_attribute() {
  return attribute_.Add();
}
inline void FunctionProto::add_attribute(const std::string& value) {
  attribute_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:onnx.FunctionProto.attribute)
}
inline void FunctionProto::add_attribute(std::string&& value) {
  attribute_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:onnx.FunctionProto.attribute)
}
inline void FunctionProto::add_attribute(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  attribute_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:onnx.FunctionProto.attribute)
}
inline void FunctionProto::add_attribute(const char* value, size_t size) {
  attribute_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:onnx.FunctionProto.attribute)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
FunctionProto::attribute() const {
  // @@protoc_insertion_point(field_list:onnx.FunctionProto.attribute)
  return attribute_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
FunctionProto::mutable_attribute() {
  // @@protoc_insertion_point(field_mutable_list:onnx.FunctionProto.attribute)
  return &attribute_;
}

// repeated .onnx.NodeProto node = 7;
inline int FunctionProto::_internal_node_size() const {
  return node_.size();
}
inline int FunctionProto::node_size() const {
  return _internal_node_size();
}
inline void FunctionProto::clear_node() {
  node_.Clear();
}
inline ::onnx::NodeProto* FunctionProto::mutable_node(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.FunctionProto.node)
  return node_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto >*
FunctionProto::mutable_node() {
  // @@protoc_insertion_point(field_mutable_list:onnx.FunctionProto.node)
  return &node_;
}
inline const ::onnx::NodeProto& FunctionProto::_internal_node(int index) const {
  return node_.Get(index);
}
inline const ::onnx::NodeProto& FunctionProto::node(int index) const {
  // @@protoc_insertion_point(field_get:onnx.FunctionProto.node)
  return _internal_node(index);
}
inline ::onnx::NodeProto* FunctionProto::_internal_add_node() {
  return node_.Add();
}
inline ::onnx::NodeProto* FunctionProto::add_node() {
  ::onnx::NodeProto* _add = _internal_add_node();
  // @@protoc_insertion_point(field_add:onnx.FunctionProto.node)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::NodeProto >&
FunctionProto::node() const {
  // @@protoc_insertion_point(field_list:onnx.FunctionProto.node)
  return node_;
}

// string doc_string = 8;
inline void FunctionProto::clear_doc_string() {
  doc_string_.ClearToEmpty();
}
inline const std::string& FunctionProto::doc_string() const {
  // @@protoc_insertion_point(field_get:onnx.FunctionProto.doc_string)
  return _internal_doc_string();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FunctionProto::set_doc_string(ArgT0&& arg0, ArgT... args) {
 
 doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.FunctionProto.doc_string)
}
inline std::string* FunctionProto::mutable_doc_string() {
  std::string* _s = _internal_mutable_doc_string();
  // @@protoc_insertion_point(field_mutable:onnx.FunctionProto.doc_string)
  return _s;
}
inline const std::string& FunctionProto::_internal_doc_string() const {
  return doc_string_.Get();
}
inline void FunctionProto::_internal_set_doc_string(const std::string& value) {
  
  doc_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* FunctionProto::_internal_mutable_doc_string() {
  
  return doc_string_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* FunctionProto::release_doc_string() {
  // @@protoc_insertion_point(field_release:onnx.FunctionProto.doc_string)
  return doc_string_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void FunctionProto::set_allocated_doc_string(std::string* doc_string) {
  if (doc_string != nullptr) {
    
  } else {
    
  }
  doc_string_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), doc_string,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (doc_string_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    doc_string_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.FunctionProto.doc_string)
}

// repeated .onnx.OperatorSetIdProto opset_import = 9;
inline int FunctionProto::_internal_opset_import_size() const {
  return opset_import_.size();
}
inline int FunctionProto::opset_import_size() const {
  return _internal_opset_import_size();
}
inline void FunctionProto::clear_opset_import() {
  opset_import_.Clear();
}
inline ::onnx::OperatorSetIdProto* FunctionProto::mutable_opset_import(int index) {
  // @@protoc_insertion_point(field_mutable:onnx.FunctionProto.opset_import)
  return opset_import_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto >*
FunctionProto::mutable_opset_import() {
  // @@protoc_insertion_point(field_mutable_list:onnx.FunctionProto.opset_import)
  return &opset_import_;
}
inline const ::onnx::OperatorSetIdProto& FunctionProto::_internal_opset_import(int index) const {
  return opset_import_.Get(index);
}
inline const ::onnx::OperatorSetIdProto& FunctionProto::opset_import(int index) const {
  // @@protoc_insertion_point(field_get:onnx.FunctionProto.opset_import)
  return _internal_opset_import(index);
}
inline ::onnx::OperatorSetIdProto* FunctionProto::_internal_add_opset_import() {
  return opset_import_.Add();
}
inline ::onnx::OperatorSetIdProto* FunctionProto::add_opset_import() {
  ::onnx::OperatorSetIdProto* _add = _internal_add_opset_import();
  // @@protoc_insertion_point(field_add:onnx.FunctionProto.opset_import)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::onnx::OperatorSetIdProto >&
FunctionProto::opset_import() const {
  // @@protoc_insertion_point(field_list:onnx.FunctionProto.opset_import)
  return opset_import_;
}

// string domain = 10;
inline void FunctionProto::clear_domain() {
  domain_.ClearToEmpty();
}
inline const std::string& FunctionProto::domain() const {
  // @@protoc_insertion_point(field_get:onnx.FunctionProto.domain)
  return _internal_domain();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void FunctionProto::set_domain(ArgT0&& arg0, ArgT... args) {
 
 domain_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:onnx.FunctionProto.domain)
}
inline std::string* FunctionProto::mutable_domain() {
  std::string* _s = _internal_mutable_domain();
  // @@protoc_insertion_point(field_mutable:onnx.FunctionProto.domain)
  return _s;
}
inline const std::string& FunctionProto::_internal_domain() const {
  return domain_.Get();
}
inline void FunctionProto::_internal_set_domain(const std::string& value) {
  
  domain_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
}
inline std::string* FunctionProto::_internal_mutable_domain() {
  
  return domain_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
}
inline std::string* FunctionProto::release_domain() {
  // @@protoc_insertion_point(field_release:onnx.FunctionProto.domain)
  return domain_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
}
inline void FunctionProto::set_allocated_domain(std::string* domain) {
  if (domain != nullptr) {
    
  } else {
    
  }
  domain_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), domain,
      GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (domain_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
    domain_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:onnx.FunctionProto.domain)
}

#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------


// @@protoc_insertion_point(namespace_scope)

}  // namespace onnx

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::onnx::AttributeProto_AttributeType> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::onnx::AttributeProto_AttributeType>() {
  return ::onnx::AttributeProto_AttributeType_descriptor();
}
template <> struct is_proto_enum< ::onnx::TensorProto_DataType> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::onnx::TensorProto_DataType>() {
  return ::onnx::TensorProto_DataType_descriptor();
}
template <> struct is_proto_enum< ::onnx::TensorProto_DataLocation> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::onnx::TensorProto_DataLocation>() {
  return ::onnx::TensorProto_DataLocation_descriptor();
}
template <> struct is_proto_enum< ::onnx::Version> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::onnx::Version>() {
  return ::onnx::Version_descriptor();
}
template <> struct is_proto_enum< ::onnx::OperatorStatus> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::onnx::OperatorStatus>() {
  return ::onnx::OperatorStatus_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_onnx_2eproto
