// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: tensorflow/lite/toco/model_flags.proto
// Protobuf C++ Version: 5.28.3

#ifndef GOOGLE_PROTOBUF_INCLUDED_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 5028003
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.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"
#include "tensorflow/lite/toco/types.pb.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto PROTOBUF_EXPORT

namespace google {
namespace protobuf {
namespace internal {
class AnyMetadata;
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct PROTOBUF_EXPORT TableStruct_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto {
  static const ::uint32_t offsets[];
};
PROTOBUF_EXPORT extern const ::google::protobuf::internal::DescriptorTable
    descriptor_table_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto;
namespace toco {
class ArraysExtraInfo;
struct ArraysExtraInfoDefaultTypeInternal;
PROTOBUF_EXPORT extern ArraysExtraInfoDefaultTypeInternal _ArraysExtraInfo_default_instance_;
class ArraysExtraInfo_Entry;
struct ArraysExtraInfo_EntryDefaultTypeInternal;
PROTOBUF_EXPORT extern ArraysExtraInfo_EntryDefaultTypeInternal _ArraysExtraInfo_Entry_default_instance_;
class InputArray;
struct InputArrayDefaultTypeInternal;
PROTOBUF_EXPORT extern InputArrayDefaultTypeInternal _InputArray_default_instance_;
class InputArrayShape;
struct InputArrayShapeDefaultTypeInternal;
PROTOBUF_EXPORT extern InputArrayShapeDefaultTypeInternal _InputArrayShape_default_instance_;
class ModelFlags;
struct ModelFlagsDefaultTypeInternal;
PROTOBUF_EXPORT extern ModelFlagsDefaultTypeInternal _ModelFlags_default_instance_;
class ModelFlags_ModelCheck;
struct ModelFlags_ModelCheckDefaultTypeInternal;
PROTOBUF_EXPORT extern ModelFlags_ModelCheckDefaultTypeInternal _ModelFlags_ModelCheck_default_instance_;
class RnnState;
struct RnnStateDefaultTypeInternal;
PROTOBUF_EXPORT extern RnnStateDefaultTypeInternal _RnnState_default_instance_;
}  // namespace toco
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace toco {
enum ModelFlags_HloFileType : int {
  ModelFlags_HloFileType_UNKNOWN = 0,
  ModelFlags_HloFileType_HLO_TEXT = 1,
  ModelFlags_HloFileType_HLO_PROTO = 2,
};

PROTOBUF_EXPORT bool ModelFlags_HloFileType_IsValid(int value);
PROTOBUF_EXPORT extern const uint32_t ModelFlags_HloFileType_internal_data_[];
constexpr ModelFlags_HloFileType ModelFlags_HloFileType_HloFileType_MIN = static_cast<ModelFlags_HloFileType>(0);
constexpr ModelFlags_HloFileType ModelFlags_HloFileType_HloFileType_MAX = static_cast<ModelFlags_HloFileType>(2);
constexpr int ModelFlags_HloFileType_HloFileType_ARRAYSIZE = 2 + 1;
PROTOBUF_EXPORT const ::google::protobuf::EnumDescriptor*
ModelFlags_HloFileType_descriptor();
template <typename T>
const std::string& ModelFlags_HloFileType_Name(T value) {
  static_assert(std::is_same<T, ModelFlags_HloFileType>::value ||
                    std::is_integral<T>::value,
                "Incorrect type passed to HloFileType_Name().");
  return ModelFlags_HloFileType_Name(static_cast<ModelFlags_HloFileType>(value));
}
template <>
inline const std::string& ModelFlags_HloFileType_Name(ModelFlags_HloFileType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ModelFlags_HloFileType_descriptor,
                                                 0, 2>(
      static_cast<int>(value));
}
inline bool ModelFlags_HloFileType_Parse(absl::string_view name, ModelFlags_HloFileType* value) {
  return ::google::protobuf::internal::ParseNamedEnum<ModelFlags_HloFileType>(
      ModelFlags_HloFileType_descriptor(), name, value);
}

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


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

class PROTOBUF_EXPORT RnnState final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:toco.RnnState) */ {
 public:
  inline RnnState() : RnnState(nullptr) {}
  ~RnnState() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR RnnState(
      ::google::protobuf::internal::ConstantInitialized);

  inline RnnState(const RnnState& from) : RnnState(nullptr, from) {}
  inline RnnState(RnnState&& from) noexcept
      : RnnState(nullptr, std::move(from)) {}
  inline RnnState& operator=(const RnnState& from) {
    CopyFrom(from);
    return *this;
  }
  inline RnnState& operator=(RnnState&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const RnnState& default_instance() {
    return *internal_default_instance();
  }
  static inline const RnnState* internal_default_instance() {
    return reinterpret_cast<const RnnState*>(
        &_RnnState_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(RnnState& a, RnnState& b) { a.Swap(&b); }
  inline void Swap(RnnState* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RnnState* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  RnnState* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<RnnState>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RnnState& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RnnState& from) { RnnState::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(RnnState* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "toco.RnnState"; }

 protected:
  explicit RnnState(::google::protobuf::Arena* arena);
  RnnState(::google::protobuf::Arena* arena, const RnnState& from);
  RnnState(::google::protobuf::Arena* arena, RnnState&& from) noexcept
      : RnnState(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kStateArrayFieldNumber = 1,
    kBackEdgeSourceArrayFieldNumber = 2,
    kSizeFieldNumber = 3,
    kNumDimsFieldNumber = 4,
    kDiscardableFieldNumber = 5,
  };
  // optional string state_array = 1;
  bool has_state_array() const;
  void clear_state_array() ;
  const std::string& state_array() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_state_array(Arg_&& arg, Args_... args);
  std::string* mutable_state_array();
  PROTOBUF_NODISCARD std::string* release_state_array();
  void set_allocated_state_array(std::string* value);

  private:
  const std::string& _internal_state_array() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_state_array(
      const std::string& value);
  std::string* _internal_mutable_state_array();

  public:
  // optional string back_edge_source_array = 2;
  bool has_back_edge_source_array() const;
  void clear_back_edge_source_array() ;
  const std::string& back_edge_source_array() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_back_edge_source_array(Arg_&& arg, Args_... args);
  std::string* mutable_back_edge_source_array();
  PROTOBUF_NODISCARD std::string* release_back_edge_source_array();
  void set_allocated_back_edge_source_array(std::string* value);

  private:
  const std::string& _internal_back_edge_source_array() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_back_edge_source_array(
      const std::string& value);
  std::string* _internal_mutable_back_edge_source_array();

  public:
  // optional int32 size = 3;
  bool has_size() const;
  void clear_size() ;
  ::int32_t size() const;
  void set_size(::int32_t value);

  private:
  ::int32_t _internal_size() const;
  void _internal_set_size(::int32_t value);

  public:
  // optional int32 num_dims = 4;
  bool has_num_dims() const;
  void clear_num_dims() ;
  ::int32_t num_dims() const;
  void set_num_dims(::int32_t value);

  private:
  ::int32_t _internal_num_dims() const;
  void _internal_set_num_dims(::int32_t value);

  public:
  // optional bool discardable = 5;
  bool has_discardable() const;
  void clear_discardable() ;
  bool discardable() const;
  void set_discardable(bool value);

  private:
  bool _internal_discardable() const;
  void _internal_set_discardable(bool value);

  public:
  // @@protoc_insertion_point(class_scope:toco.RnnState)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 0,
      55, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const RnnState& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr state_array_;
    ::google::protobuf::internal::ArenaStringPtr back_edge_source_array_;
    ::int32_t size_;
    ::int32_t num_dims_;
    bool discardable_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ModelFlags_ModelCheck final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:toco.ModelFlags.ModelCheck) */ {
 public:
  inline ModelFlags_ModelCheck() : ModelFlags_ModelCheck(nullptr) {}
  ~ModelFlags_ModelCheck() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ModelFlags_ModelCheck(
      ::google::protobuf::internal::ConstantInitialized);

  inline ModelFlags_ModelCheck(const ModelFlags_ModelCheck& from) : ModelFlags_ModelCheck(nullptr, from) {}
  inline ModelFlags_ModelCheck(ModelFlags_ModelCheck&& from) noexcept
      : ModelFlags_ModelCheck(nullptr, std::move(from)) {}
  inline ModelFlags_ModelCheck& operator=(const ModelFlags_ModelCheck& from) {
    CopyFrom(from);
    return *this;
  }
  inline ModelFlags_ModelCheck& operator=(ModelFlags_ModelCheck&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ModelFlags_ModelCheck& default_instance() {
    return *internal_default_instance();
  }
  static inline const ModelFlags_ModelCheck* internal_default_instance() {
    return reinterpret_cast<const ModelFlags_ModelCheck*>(
        &_ModelFlags_ModelCheck_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(ModelFlags_ModelCheck& a, ModelFlags_ModelCheck& b) { a.Swap(&b); }
  inline void Swap(ModelFlags_ModelCheck* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ModelFlags_ModelCheck* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ModelFlags_ModelCheck* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<ModelFlags_ModelCheck>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ModelFlags_ModelCheck& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ModelFlags_ModelCheck& from) { ModelFlags_ModelCheck::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ModelFlags_ModelCheck* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "toco.ModelFlags.ModelCheck"; }

 protected:
  explicit ModelFlags_ModelCheck(::google::protobuf::Arena* arena);
  ModelFlags_ModelCheck(::google::protobuf::Arena* arena, const ModelFlags_ModelCheck& from);
  ModelFlags_ModelCheck(::google::protobuf::Arena* arena, ModelFlags_ModelCheck&& from) noexcept
      : ModelFlags_ModelCheck(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kCountTypeFieldNumber = 1,
    kCountMinFieldNumber = 2,
    kCountMaxFieldNumber = 3,
  };
  // optional string count_type = 1 [default = "None"];
  bool has_count_type() const;
  void clear_count_type() ;
  const std::string& count_type() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_count_type(Arg_&& arg, Args_... args);
  std::string* mutable_count_type();
  PROTOBUF_NODISCARD std::string* release_count_type();
  void set_allocated_count_type(std::string* value);

  private:
  const std::string& _internal_count_type() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_count_type(
      const std::string& value);
  std::string* _internal_mutable_count_type();

  public:
  // optional int32 count_min = 2 [default = -1];
  bool has_count_min() const;
  void clear_count_min() ;
  ::int32_t count_min() const;
  void set_count_min(::int32_t value);

  private:
  ::int32_t _internal_count_min() const;
  void _internal_set_count_min(::int32_t value);

  public:
  // optional int32 count_max = 3 [default = -1];
  bool has_count_max() const;
  void clear_count_max() ;
  ::int32_t count_max() const;
  void set_count_max(::int32_t value);

  private:
  ::int32_t _internal_count_max() const;
  void _internal_set_count_max(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:toco.ModelFlags.ModelCheck)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      2, 3, 0,
      45, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ModelFlags_ModelCheck& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    static const ::google::protobuf::internal::LazyString _i_give_permission_to_break_this_code_default_count_type_;
    ::google::protobuf::internal::ArenaStringPtr count_type_;
    ::int32_t count_min_;
    ::int32_t count_max_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT InputArrayShape final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:toco.InputArrayShape) */ {
 public:
  inline InputArrayShape() : InputArrayShape(nullptr) {}
  ~InputArrayShape() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR InputArrayShape(
      ::google::protobuf::internal::ConstantInitialized);

  inline InputArrayShape(const InputArrayShape& from) : InputArrayShape(nullptr, from) {}
  inline InputArrayShape(InputArrayShape&& from) noexcept
      : InputArrayShape(nullptr, std::move(from)) {}
  inline InputArrayShape& operator=(const InputArrayShape& from) {
    CopyFrom(from);
    return *this;
  }
  inline InputArrayShape& operator=(InputArrayShape&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const InputArrayShape& default_instance() {
    return *internal_default_instance();
  }
  static inline const InputArrayShape* internal_default_instance() {
    return reinterpret_cast<const InputArrayShape*>(
        &_InputArrayShape_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(InputArrayShape& a, InputArrayShape& b) { a.Swap(&b); }
  inline void Swap(InputArrayShape* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(InputArrayShape* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  InputArrayShape* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<InputArrayShape>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const InputArrayShape& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const InputArrayShape& from) { InputArrayShape::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(InputArrayShape* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "toco.InputArrayShape"; }

 protected:
  explicit InputArrayShape(::google::protobuf::Arena* arena);
  InputArrayShape(::google::protobuf::Arena* arena, const InputArrayShape& from);
  InputArrayShape(::google::protobuf::Arena* arena, InputArrayShape&& from) noexcept
      : InputArrayShape(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kDimsFieldNumber = 2,
    kUnknownRankFieldNumber = 3,
  };
  // repeated int32 dims = 2;
  int dims_size() const;
  private:
  int _internal_dims_size() const;

  public:
  void clear_dims() ;
  ::int32_t dims(int index) const;
  void set_dims(int index, ::int32_t value);
  void add_dims(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& dims() const;
  ::google::protobuf::RepeatedField<::int32_t>* mutable_dims();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_dims() const;
  ::google::protobuf::RepeatedField<::int32_t>* _internal_mutable_dims();

  public:
  // optional bool unknown_rank = 3;
  bool has_unknown_rank() const;
  void clear_unknown_rank() ;
  bool unknown_rank() const;
  void set_unknown_rank(bool value);

  private:
  bool _internal_unknown_rank() const;
  void _internal_set_unknown_rank(bool value);

  public:
  // @@protoc_insertion_point(class_scope:toco.InputArrayShape)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      1, 2, 0,
      0, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const InputArrayShape& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int32_t> dims_;
    bool unknown_rank_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT InputArray final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:toco.InputArray) */ {
 public:
  inline InputArray() : InputArray(nullptr) {}
  ~InputArray() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR InputArray(
      ::google::protobuf::internal::ConstantInitialized);

  inline InputArray(const InputArray& from) : InputArray(nullptr, from) {}
  inline InputArray(InputArray&& from) noexcept
      : InputArray(nullptr, std::move(from)) {}
  inline InputArray& operator=(const InputArray& from) {
    CopyFrom(from);
    return *this;
  }
  inline InputArray& operator=(InputArray&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const InputArray& default_instance() {
    return *internal_default_instance();
  }
  static inline const InputArray* internal_default_instance() {
    return reinterpret_cast<const InputArray*>(
        &_InputArray_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(InputArray& a, InputArray& b) { a.Swap(&b); }
  inline void Swap(InputArray* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(InputArray* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  InputArray* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<InputArray>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const InputArray& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const InputArray& from) { InputArray::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(InputArray* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "toco.InputArray"; }

 protected:
  explicit InputArray(::google::protobuf::Arena* arena);
  InputArray(::google::protobuf::Arena* arena, const InputArray& from);
  InputArray(::google::protobuf::Arena* arena, InputArray&& from) noexcept
      : InputArray(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNameFieldNumber = 1,
    kShapeFieldNumber = 6,
    kMeanValueFieldNumber = 3,
    kDataTypeFieldNumber = 5,
    kStdValueFieldNumber = 4,
  };
  // optional string name = 1;
  bool has_name() const;
  void clear_name() ;
  const std::string& name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* value);

  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:
  // optional .toco.InputArrayShape shape = 6;
  bool has_shape() const;
  void clear_shape() ;
  const ::toco::InputArrayShape& shape() const;
  PROTOBUF_NODISCARD ::toco::InputArrayShape* release_shape();
  ::toco::InputArrayShape* mutable_shape();
  void set_allocated_shape(::toco::InputArrayShape* value);
  void unsafe_arena_set_allocated_shape(::toco::InputArrayShape* value);
  ::toco::InputArrayShape* unsafe_arena_release_shape();

  private:
  const ::toco::InputArrayShape& _internal_shape() const;
  ::toco::InputArrayShape* _internal_mutable_shape();

  public:
  // optional float mean_value = 3;
  bool has_mean_value() const;
  void clear_mean_value() ;
  float mean_value() const;
  void set_mean_value(float value);

  private:
  float _internal_mean_value() const;
  void _internal_set_mean_value(float value);

  public:
  // optional .toco.IODataType data_type = 5;
  bool has_data_type() const;
  void clear_data_type() ;
  ::toco::IODataType data_type() const;
  void set_data_type(::toco::IODataType value);

  private:
  ::toco::IODataType _internal_data_type() const;
  void _internal_set_data_type(::toco::IODataType value);

  public:
  // optional float std_value = 4 [default = 1];
  bool has_std_value() const;
  void clear_std_value() ;
  float std_value() const;
  void set_std_value(float value);

  private:
  float _internal_std_value() const;
  void _internal_set_std_value(float value);

  public:
  // @@protoc_insertion_point(class_scope:toco.InputArray)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 5, 2,
      28, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const InputArray& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::toco::InputArrayShape* shape_;
    float mean_value_;
    int data_type_;
    float std_value_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArraysExtraInfo_Entry final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:toco.ArraysExtraInfo.Entry) */ {
 public:
  inline ArraysExtraInfo_Entry() : ArraysExtraInfo_Entry(nullptr) {}
  ~ArraysExtraInfo_Entry() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArraysExtraInfo_Entry(
      ::google::protobuf::internal::ConstantInitialized);

  inline ArraysExtraInfo_Entry(const ArraysExtraInfo_Entry& from) : ArraysExtraInfo_Entry(nullptr, from) {}
  inline ArraysExtraInfo_Entry(ArraysExtraInfo_Entry&& from) noexcept
      : ArraysExtraInfo_Entry(nullptr, std::move(from)) {}
  inline ArraysExtraInfo_Entry& operator=(const ArraysExtraInfo_Entry& from) {
    CopyFrom(from);
    return *this;
  }
  inline ArraysExtraInfo_Entry& operator=(ArraysExtraInfo_Entry&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArraysExtraInfo_Entry& default_instance() {
    return *internal_default_instance();
  }
  static inline const ArraysExtraInfo_Entry* internal_default_instance() {
    return reinterpret_cast<const ArraysExtraInfo_Entry*>(
        &_ArraysExtraInfo_Entry_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(ArraysExtraInfo_Entry& a, ArraysExtraInfo_Entry& b) { a.Swap(&b); }
  inline void Swap(ArraysExtraInfo_Entry* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ArraysExtraInfo_Entry* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ArraysExtraInfo_Entry* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<ArraysExtraInfo_Entry>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ArraysExtraInfo_Entry& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ArraysExtraInfo_Entry& from) { ArraysExtraInfo_Entry::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ArraysExtraInfo_Entry* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "toco.ArraysExtraInfo.Entry"; }

 protected:
  explicit ArraysExtraInfo_Entry(::google::protobuf::Arena* arena);
  ArraysExtraInfo_Entry(::google::protobuf::Arena* arena, const ArraysExtraInfo_Entry& from);
  ArraysExtraInfo_Entry(::google::protobuf::Arena* arena, ArraysExtraInfo_Entry&& from) noexcept
      : ArraysExtraInfo_Entry(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNameFieldNumber = 1,
    kNameRegexpFieldNumber = 7,
    kShapeFieldNumber = 5,
    kMinFieldNumber = 2,
    kMaxFieldNumber = 3,
    kDataTypeFieldNumber = 4,
    kConstantFloatValueFieldNumber = 6,
  };
  // optional string name = 1;
  bool has_name() const;
  void clear_name() ;
  const std::string& name() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  std::string* mutable_name();
  PROTOBUF_NODISCARD std::string* release_name();
  void set_allocated_name(std::string* value);

  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:
  // optional string name_regexp = 7;
  bool has_name_regexp() const;
  void clear_name_regexp() ;
  const std::string& name_regexp() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_name_regexp(Arg_&& arg, Args_... args);
  std::string* mutable_name_regexp();
  PROTOBUF_NODISCARD std::string* release_name_regexp();
  void set_allocated_name_regexp(std::string* value);

  private:
  const std::string& _internal_name_regexp() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_name_regexp(
      const std::string& value);
  std::string* _internal_mutable_name_regexp();

  public:
  // optional .toco.InputArrayShape shape = 5;
  bool has_shape() const;
  void clear_shape() ;
  const ::toco::InputArrayShape& shape() const;
  PROTOBUF_NODISCARD ::toco::InputArrayShape* release_shape();
  ::toco::InputArrayShape* mutable_shape();
  void set_allocated_shape(::toco::InputArrayShape* value);
  void unsafe_arena_set_allocated_shape(::toco::InputArrayShape* value);
  ::toco::InputArrayShape* unsafe_arena_release_shape();

  private:
  const ::toco::InputArrayShape& _internal_shape() const;
  ::toco::InputArrayShape* _internal_mutable_shape();

  public:
  // optional double min = 2;
  bool has_min() const;
  void clear_min() ;
  double min() const;
  void set_min(double value);

  private:
  double _internal_min() const;
  void _internal_set_min(double value);

  public:
  // optional double max = 3;
  bool has_max() const;
  void clear_max() ;
  double max() const;
  void set_max(double value);

  private:
  double _internal_max() const;
  void _internal_set_max(double value);

  public:
  // optional .toco.IODataType data_type = 4;
  bool has_data_type() const;
  void clear_data_type() ;
  ::toco::IODataType data_type() const;
  void set_data_type(::toco::IODataType value);

  private:
  ::toco::IODataType _internal_data_type() const;
  void _internal_set_data_type(::toco::IODataType value);

  public:
  // optional float constant_float_value = 6;
  bool has_constant_float_value() const;
  void clear_constant_float_value() ;
  float constant_float_value() const;
  void set_constant_float_value(float value);

  private:
  float _internal_constant_float_value() const;
  void _internal_set_constant_float_value(float value);

  public:
  // @@protoc_insertion_point(class_scope:toco.ArraysExtraInfo.Entry)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      3, 7, 2,
      50, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ArraysExtraInfo_Entry& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr name_regexp_;
    ::toco::InputArrayShape* shape_;
    double min_;
    double max_;
    int data_type_;
    float constant_float_value_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ArraysExtraInfo final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:toco.ArraysExtraInfo) */ {
 public:
  inline ArraysExtraInfo() : ArraysExtraInfo(nullptr) {}
  ~ArraysExtraInfo() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArraysExtraInfo(
      ::google::protobuf::internal::ConstantInitialized);

  inline ArraysExtraInfo(const ArraysExtraInfo& from) : ArraysExtraInfo(nullptr, from) {}
  inline ArraysExtraInfo(ArraysExtraInfo&& from) noexcept
      : ArraysExtraInfo(nullptr, std::move(from)) {}
  inline ArraysExtraInfo& operator=(const ArraysExtraInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline ArraysExtraInfo& operator=(ArraysExtraInfo&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArraysExtraInfo& default_instance() {
    return *internal_default_instance();
  }
  static inline const ArraysExtraInfo* internal_default_instance() {
    return reinterpret_cast<const ArraysExtraInfo*>(
        &_ArraysExtraInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(ArraysExtraInfo& a, ArraysExtraInfo& b) { a.Swap(&b); }
  inline void Swap(ArraysExtraInfo* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ArraysExtraInfo* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ArraysExtraInfo* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<ArraysExtraInfo>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ArraysExtraInfo& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ArraysExtraInfo& from) { ArraysExtraInfo::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ArraysExtraInfo* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "toco.ArraysExtraInfo"; }

 protected:
  explicit ArraysExtraInfo(::google::protobuf::Arena* arena);
  ArraysExtraInfo(::google::protobuf::Arena* arena, const ArraysExtraInfo& from);
  ArraysExtraInfo(::google::protobuf::Arena* arena, ArraysExtraInfo&& from) noexcept
      : ArraysExtraInfo(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Entry = ArraysExtraInfo_Entry;

  // accessors -------------------------------------------------------
  enum : int {
    kEntriesFieldNumber = 1,
  };
  // repeated .toco.ArraysExtraInfo.Entry entries = 1;
  int entries_size() const;
  private:
  int _internal_entries_size() const;

  public:
  void clear_entries() ;
  ::toco::ArraysExtraInfo_Entry* mutable_entries(int index);
  ::google::protobuf::RepeatedPtrField<::toco::ArraysExtraInfo_Entry>* mutable_entries();

  private:
  const ::google::protobuf::RepeatedPtrField<::toco::ArraysExtraInfo_Entry>& _internal_entries() const;
  ::google::protobuf::RepeatedPtrField<::toco::ArraysExtraInfo_Entry>* _internal_mutable_entries();
  public:
  const ::toco::ArraysExtraInfo_Entry& entries(int index) const;
  ::toco::ArraysExtraInfo_Entry* add_entries();
  const ::google::protobuf::RepeatedPtrField<::toco::ArraysExtraInfo_Entry>& entries() const;
  // @@protoc_insertion_point(class_scope:toco.ArraysExtraInfo)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      0, 1, 1,
      0, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ArraysExtraInfo& from_msg);
    ::google::protobuf::RepeatedPtrField< ::toco::ArraysExtraInfo_Entry > entries_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_EXPORT ModelFlags final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:toco.ModelFlags) */ {
 public:
  inline ModelFlags() : ModelFlags(nullptr) {}
  ~ModelFlags() PROTOBUF_FINAL;
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ModelFlags(
      ::google::protobuf::internal::ConstantInitialized);

  inline ModelFlags(const ModelFlags& from) : ModelFlags(nullptr, from) {}
  inline ModelFlags(ModelFlags&& from) noexcept
      : ModelFlags(nullptr, std::move(from)) {}
  inline ModelFlags& operator=(const ModelFlags& from) {
    CopyFrom(from);
    return *this;
  }
  inline ModelFlags& operator=(ModelFlags&& from) noexcept {
    if (this == &from) return *this;
    if (GetArena() == from.GetArena()
#ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetArena() != nullptr
#endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ModelFlags& default_instance() {
    return *internal_default_instance();
  }
  static inline const ModelFlags* internal_default_instance() {
    return reinterpret_cast<const ModelFlags*>(
        &_ModelFlags_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(ModelFlags& a, ModelFlags& b) { a.Swap(&b); }
  inline void Swap(ModelFlags* other) {
    if (other == this) return;
#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() != nullptr && GetArena() == other->GetArena()) {
#else   // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetArena() == other->GetArena()) {
#endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ModelFlags* other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ModelFlags* New(::google::protobuf::Arena* arena = nullptr) const PROTOBUF_FINAL {
    return ::google::protobuf::Message::DefaultConstruct<ModelFlags>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ModelFlags& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ModelFlags& from) { ModelFlags::MergeImpl(*this, from); }

  private:
  static void MergeImpl(
      ::google::protobuf::MessageLite& to_msg,
      const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* _InternalSerialize(
      const MessageLite& msg, ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target,
      ::google::protobuf::io::EpsCopyOutputStream* stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* arena);
  void SharedDtor();
  void InternalSwap(ModelFlags* other);
 private:
  friend class ::google::protobuf::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() { return "toco.ModelFlags"; }

 protected:
  explicit ModelFlags(::google::protobuf::Arena* arena);
  ModelFlags(::google::protobuf::Arena* arena, const ModelFlags& from);
  ModelFlags(::google::protobuf::Arena* arena, ModelFlags&& from) noexcept
      : ModelFlags(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::Message::ClassData* GetClassData() const PROTOBUF_FINAL;
  static const ::google::protobuf::Message::ClassDataFull _class_data_;

 public:
  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using ModelCheck = ModelFlags_ModelCheck;
  using HloFileType = ModelFlags_HloFileType;
  static constexpr HloFileType UNKNOWN = ModelFlags_HloFileType_UNKNOWN;
  static constexpr HloFileType HLO_TEXT = ModelFlags_HloFileType_HLO_TEXT;
  static constexpr HloFileType HLO_PROTO = ModelFlags_HloFileType_HLO_PROTO;
  static inline bool HloFileType_IsValid(int value) {
    return ModelFlags_HloFileType_IsValid(value);
  }
  static constexpr HloFileType HloFileType_MIN = ModelFlags_HloFileType_HloFileType_MIN;
  static constexpr HloFileType HloFileType_MAX = ModelFlags_HloFileType_HloFileType_MAX;
  static constexpr int HloFileType_ARRAYSIZE = ModelFlags_HloFileType_HloFileType_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* HloFileType_descriptor() {
    return ModelFlags_HloFileType_descriptor();
  }
  template <typename T>
  static inline const std::string& HloFileType_Name(T value) {
    return ModelFlags_HloFileType_Name(value);
  }
  static inline bool HloFileType_Parse(absl::string_view name, HloFileType* value) {
    return ModelFlags_HloFileType_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kInputArraysFieldNumber = 1,
    kOutputArraysFieldNumber = 2,
    kRnnStatesFieldNumber = 12,
    kModelChecksFieldNumber = 14,
    kSavedModelTagsFieldNumber = 22,
    kSavedModelExportedNamesFieldNumber = 23,
    kControlOutputArraysFieldNumber = 24,
    kSavedModelDirFieldNumber = 20,
    kArraysExtraInfoFieldNumber = 18,
    kVariableBatchFieldNumber = 10,
    kAllowNonexistentArraysFieldNumber = 16,
    kAllowNonasciiArraysFieldNumber = 17,
    kUseHloImportFieldNumber = 25,
    kSavedModelVersionFieldNumber = 21,
    kHloFileTypeFieldNumber = 26,
    kChangeConcatInputRangesFieldNumber = 19,
  };
  // repeated .toco.InputArray input_arrays = 1;
  int input_arrays_size() const;
  private:
  int _internal_input_arrays_size() const;

  public:
  void clear_input_arrays() ;
  ::toco::InputArray* mutable_input_arrays(int index);
  ::google::protobuf::RepeatedPtrField<::toco::InputArray>* mutable_input_arrays();

  private:
  const ::google::protobuf::RepeatedPtrField<::toco::InputArray>& _internal_input_arrays() const;
  ::google::protobuf::RepeatedPtrField<::toco::InputArray>* _internal_mutable_input_arrays();
  public:
  const ::toco::InputArray& input_arrays(int index) const;
  ::toco::InputArray* add_input_arrays();
  const ::google::protobuf::RepeatedPtrField<::toco::InputArray>& input_arrays() const;
  // repeated string output_arrays = 2;
  int output_arrays_size() const;
  private:
  int _internal_output_arrays_size() const;

  public:
  void clear_output_arrays() ;
  const std::string& output_arrays(int index) const;
  std::string* mutable_output_arrays(int index);
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_output_arrays(int index, Arg_&& value, Args_... args);
  std::string* add_output_arrays();
  template <typename Arg_ = const std::string&, typename... Args_>
  void add_output_arrays(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<std::string>& output_arrays() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_output_arrays();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_output_arrays() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_output_arrays();

  public:
  // repeated .toco.RnnState rnn_states = 12;
  int rnn_states_size() const;
  private:
  int _internal_rnn_states_size() const;

  public:
  void clear_rnn_states() ;
  ::toco::RnnState* mutable_rnn_states(int index);
  ::google::protobuf::RepeatedPtrField<::toco::RnnState>* mutable_rnn_states();

  private:
  const ::google::protobuf::RepeatedPtrField<::toco::RnnState>& _internal_rnn_states() const;
  ::google::protobuf::RepeatedPtrField<::toco::RnnState>* _internal_mutable_rnn_states();
  public:
  const ::toco::RnnState& rnn_states(int index) const;
  ::toco::RnnState* add_rnn_states();
  const ::google::protobuf::RepeatedPtrField<::toco::RnnState>& rnn_states() const;
  // repeated .toco.ModelFlags.ModelCheck model_checks = 14;
  int model_checks_size() const;
  private:
  int _internal_model_checks_size() const;

  public:
  void clear_model_checks() ;
  ::toco::ModelFlags_ModelCheck* mutable_model_checks(int index);
  ::google::protobuf::RepeatedPtrField<::toco::ModelFlags_ModelCheck>* mutable_model_checks();

  private:
  const ::google::protobuf::RepeatedPtrField<::toco::ModelFlags_ModelCheck>& _internal_model_checks() const;
  ::google::protobuf::RepeatedPtrField<::toco::ModelFlags_ModelCheck>* _internal_mutable_model_checks();
  public:
  const ::toco::ModelFlags_ModelCheck& model_checks(int index) const;
  ::toco::ModelFlags_ModelCheck* add_model_checks();
  const ::google::protobuf::RepeatedPtrField<::toco::ModelFlags_ModelCheck>& model_checks() const;
  // repeated string saved_model_tags = 22;
  int saved_model_tags_size() const;
  private:
  int _internal_saved_model_tags_size() const;

  public:
  void clear_saved_model_tags() ;
  const std::string& saved_model_tags(int index) const;
  std::string* mutable_saved_model_tags(int index);
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_saved_model_tags(int index, Arg_&& value, Args_... args);
  std::string* add_saved_model_tags();
  template <typename Arg_ = const std::string&, typename... Args_>
  void add_saved_model_tags(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<std::string>& saved_model_tags() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_saved_model_tags();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_saved_model_tags() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_saved_model_tags();

  public:
  // repeated string saved_model_exported_names = 23;
  int saved_model_exported_names_size() const;
  private:
  int _internal_saved_model_exported_names_size() const;

  public:
  void clear_saved_model_exported_names() ;
  const std::string& saved_model_exported_names(int index) const;
  std::string* mutable_saved_model_exported_names(int index);
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_saved_model_exported_names(int index, Arg_&& value, Args_... args);
  std::string* add_saved_model_exported_names();
  template <typename Arg_ = const std::string&, typename... Args_>
  void add_saved_model_exported_names(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<std::string>& saved_model_exported_names() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_saved_model_exported_names();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_saved_model_exported_names() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_saved_model_exported_names();

  public:
  // repeated string control_output_arrays = 24;
  int control_output_arrays_size() const;
  private:
  int _internal_control_output_arrays_size() const;

  public:
  void clear_control_output_arrays() ;
  const std::string& control_output_arrays(int index) const;
  std::string* mutable_control_output_arrays(int index);
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_control_output_arrays(int index, Arg_&& value, Args_... args);
  std::string* add_control_output_arrays();
  template <typename Arg_ = const std::string&, typename... Args_>
  void add_control_output_arrays(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<std::string>& control_output_arrays() const;
  ::google::protobuf::RepeatedPtrField<std::string>* mutable_control_output_arrays();

  private:
  const ::google::protobuf::RepeatedPtrField<std::string>& _internal_control_output_arrays() const;
  ::google::protobuf::RepeatedPtrField<std::string>* _internal_mutable_control_output_arrays();

  public:
  // optional string saved_model_dir = 20;
  bool has_saved_model_dir() const;
  void clear_saved_model_dir() ;
  const std::string& saved_model_dir() const;
  template <typename Arg_ = const std::string&, typename... Args_>
  void set_saved_model_dir(Arg_&& arg, Args_... args);
  std::string* mutable_saved_model_dir();
  PROTOBUF_NODISCARD std::string* release_saved_model_dir();
  void set_allocated_saved_model_dir(std::string* value);

  private:
  const std::string& _internal_saved_model_dir() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_saved_model_dir(
      const std::string& value);
  std::string* _internal_mutable_saved_model_dir();

  public:
  // optional .toco.ArraysExtraInfo arrays_extra_info = 18;
  bool has_arrays_extra_info() const;
  void clear_arrays_extra_info() ;
  const ::toco::ArraysExtraInfo& arrays_extra_info() const;
  PROTOBUF_NODISCARD ::toco::ArraysExtraInfo* release_arrays_extra_info();
  ::toco::ArraysExtraInfo* mutable_arrays_extra_info();
  void set_allocated_arrays_extra_info(::toco::ArraysExtraInfo* value);
  void unsafe_arena_set_allocated_arrays_extra_info(::toco::ArraysExtraInfo* value);
  ::toco::ArraysExtraInfo* unsafe_arena_release_arrays_extra_info();

  private:
  const ::toco::ArraysExtraInfo& _internal_arrays_extra_info() const;
  ::toco::ArraysExtraInfo* _internal_mutable_arrays_extra_info();

  public:
  // optional bool variable_batch = 10;
  bool has_variable_batch() const;
  void clear_variable_batch() ;
  bool variable_batch() const;
  void set_variable_batch(bool value);

  private:
  bool _internal_variable_batch() const;
  void _internal_set_variable_batch(bool value);

  public:
  // optional bool allow_nonexistent_arrays = 16;
  bool has_allow_nonexistent_arrays() const;
  void clear_allow_nonexistent_arrays() ;
  bool allow_nonexistent_arrays() const;
  void set_allow_nonexistent_arrays(bool value);

  private:
  bool _internal_allow_nonexistent_arrays() const;
  void _internal_set_allow_nonexistent_arrays(bool value);

  public:
  // optional bool allow_nonascii_arrays = 17;
  bool has_allow_nonascii_arrays() const;
  void clear_allow_nonascii_arrays() ;
  bool allow_nonascii_arrays() const;
  void set_allow_nonascii_arrays(bool value);

  private:
  bool _internal_allow_nonascii_arrays() const;
  void _internal_set_allow_nonascii_arrays(bool value);

  public:
  // optional bool use_hlo_import = 25;
  bool has_use_hlo_import() const;
  void clear_use_hlo_import() ;
  bool use_hlo_import() const;
  void set_use_hlo_import(bool value);

  private:
  bool _internal_use_hlo_import() const;
  void _internal_set_use_hlo_import(bool value);

  public:
  // optional int32 saved_model_version = 21;
  bool has_saved_model_version() const;
  void clear_saved_model_version() ;
  ::int32_t saved_model_version() const;
  void set_saved_model_version(::int32_t value);

  private:
  ::int32_t _internal_saved_model_version() const;
  void _internal_set_saved_model_version(::int32_t value);

  public:
  // optional .toco.ModelFlags.HloFileType hlo_file_type = 26;
  bool has_hlo_file_type() const;
  void clear_hlo_file_type() ;
  ::toco::ModelFlags_HloFileType hlo_file_type() const;
  void set_hlo_file_type(::toco::ModelFlags_HloFileType value);

  private:
  ::toco::ModelFlags_HloFileType _internal_hlo_file_type() const;
  void _internal_set_hlo_file_type(::toco::ModelFlags_HloFileType value);

  public:
  // optional bool change_concat_input_ranges = 19 [default = true];
  bool has_change_concat_input_ranges() const;
  void clear_change_concat_input_ranges() ;
  bool change_concat_input_ranges() const;
  void set_change_concat_input_ranges(bool value);

  private:
  bool _internal_change_concat_input_ranges() const;
  void _internal_set_change_concat_input_ranges(bool value);

  public:
  // @@protoc_insertion_point(class_scope:toco.ModelFlags)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<
      5, 16, 5,
      131, 2>
      _table_;


  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(
        ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena);
    inline explicit Impl_(::google::protobuf::internal::InternalVisibility visibility,
                          ::google::protobuf::Arena* arena, const Impl_& from,
                          const ModelFlags& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    mutable ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::toco::InputArray > input_arrays_;
    ::google::protobuf::RepeatedPtrField<std::string> output_arrays_;
    ::google::protobuf::RepeatedPtrField< ::toco::RnnState > rnn_states_;
    ::google::protobuf::RepeatedPtrField< ::toco::ModelFlags_ModelCheck > model_checks_;
    ::google::protobuf::RepeatedPtrField<std::string> saved_model_tags_;
    ::google::protobuf::RepeatedPtrField<std::string> saved_model_exported_names_;
    ::google::protobuf::RepeatedPtrField<std::string> control_output_arrays_;
    ::google::protobuf::internal::ArenaStringPtr saved_model_dir_;
    ::toco::ArraysExtraInfo* arrays_extra_info_;
    bool variable_batch_;
    bool allow_nonexistent_arrays_;
    bool allow_nonascii_arrays_;
    bool use_hlo_import_;
    ::int32_t saved_model_version_;
    int hlo_file_type_;
    bool change_concat_input_ranges_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto;
};

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




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


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

// InputArrayShape

// repeated int32 dims = 2;
inline int InputArrayShape::_internal_dims_size() const {
  return _internal_dims().size();
}
inline int InputArrayShape::dims_size() const {
  return _internal_dims_size();
}
inline void InputArrayShape::clear_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dims_.Clear();
}
inline ::int32_t InputArrayShape::dims(int index) const {
  // @@protoc_insertion_point(field_get:toco.InputArrayShape.dims)
  return _internal_dims().Get(index);
}
inline void InputArrayShape::set_dims(int index, ::int32_t value) {
  _internal_mutable_dims()->Set(index, value);
  // @@protoc_insertion_point(field_set:toco.InputArrayShape.dims)
}
inline void InputArrayShape::add_dims(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_dims()->Add(value);
  // @@protoc_insertion_point(field_add:toco.InputArrayShape.dims)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& InputArrayShape::dims() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:toco.InputArrayShape.dims)
  return _internal_dims();
}
inline ::google::protobuf::RepeatedField<::int32_t>* InputArrayShape::mutable_dims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:toco.InputArrayShape.dims)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_dims();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
InputArrayShape::_internal_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dims_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* InputArrayShape::_internal_mutable_dims() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.dims_;
}

// optional bool unknown_rank = 3;
inline bool InputArrayShape::has_unknown_rank() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline void InputArrayShape::clear_unknown_rank() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.unknown_rank_ = false;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline bool InputArrayShape::unknown_rank() const {
  // @@protoc_insertion_point(field_get:toco.InputArrayShape.unknown_rank)
  return _internal_unknown_rank();
}
inline void InputArrayShape::set_unknown_rank(bool value) {
  _internal_set_unknown_rank(value);
  _impl_._has_bits_[0] |= 0x00000001u;
  // @@protoc_insertion_point(field_set:toco.InputArrayShape.unknown_rank)
}
inline bool InputArrayShape::_internal_unknown_rank() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.unknown_rank_;
}
inline void InputArrayShape::_internal_set_unknown_rank(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.unknown_rank_ = value;
}

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

// InputArray

// optional string name = 1;
inline bool InputArray::has_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline void InputArray::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& InputArray::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.InputArray.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void InputArray::set_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:toco.InputArray.name)
}
inline std::string* InputArray::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:toco.InputArray.name)
  return _s;
}
inline const std::string& InputArray::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void InputArray::_internal_set_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(value, GetArena());
}
inline std::string* InputArray::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.name_.Mutable( GetArena());
}
inline std::string* InputArray::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.InputArray.name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.name_.Release();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.name_.Set("", GetArena());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return released;
}
inline void InputArray::set_allocated_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_.IsDefault()) {
          _impl_.name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:toco.InputArray.name)
}

// optional .toco.InputArrayShape shape = 6;
inline bool InputArray::has_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.shape_ != nullptr);
  return value;
}
inline void InputArray::clear_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.shape_ != nullptr) _impl_.shape_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::toco::InputArrayShape& InputArray::_internal_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::toco::InputArrayShape* p = _impl_.shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::toco::InputArrayShape&>(::toco::_InputArrayShape_default_instance_);
}
inline const ::toco::InputArrayShape& InputArray::shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.InputArray.shape)
  return _internal_shape();
}
inline void InputArray::unsafe_arena_set_allocated_shape(::toco::InputArrayShape* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }
  _impl_.shape_ = reinterpret_cast<::toco::InputArrayShape*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:toco.InputArray.shape)
}
inline ::toco::InputArrayShape* InputArray::release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::toco::InputArrayShape* released = _impl_.shape_;
  _impl_.shape_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::toco::InputArrayShape* InputArray::unsafe_arena_release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.InputArray.shape)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::toco::InputArrayShape* temp = _impl_.shape_;
  _impl_.shape_ = nullptr;
  return temp;
}
inline ::toco::InputArrayShape* InputArray::_internal_mutable_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::toco::InputArrayShape>(GetArena());
    _impl_.shape_ = reinterpret_cast<::toco::InputArrayShape*>(p);
  }
  return _impl_.shape_;
}
inline ::toco::InputArrayShape* InputArray::mutable_shape() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::toco::InputArrayShape* _msg = _internal_mutable_shape();
  // @@protoc_insertion_point(field_mutable:toco.InputArray.shape)
  return _msg;
}
inline void InputArray::set_allocated_shape(::toco::InputArrayShape* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.shape_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.shape_ = reinterpret_cast<::toco::InputArrayShape*>(value);
  // @@protoc_insertion_point(field_set_allocated:toco.InputArray.shape)
}

// optional float mean_value = 3;
inline bool InputArray::has_mean_value() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline void InputArray::clear_mean_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mean_value_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline float InputArray::mean_value() const {
  // @@protoc_insertion_point(field_get:toco.InputArray.mean_value)
  return _internal_mean_value();
}
inline void InputArray::set_mean_value(float value) {
  _internal_set_mean_value(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:toco.InputArray.mean_value)
}
inline float InputArray::_internal_mean_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mean_value_;
}
inline void InputArray::_internal_set_mean_value(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mean_value_ = value;
}

// optional float std_value = 4 [default = 1];
inline bool InputArray::has_std_value() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline void InputArray::clear_std_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.std_value_ = 1;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline float InputArray::std_value() const {
  // @@protoc_insertion_point(field_get:toco.InputArray.std_value)
  return _internal_std_value();
}
inline void InputArray::set_std_value(float value) {
  _internal_set_std_value(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:toco.InputArray.std_value)
}
inline float InputArray::_internal_std_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.std_value_;
}
inline void InputArray::_internal_set_std_value(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.std_value_ = value;
}

// optional .toco.IODataType data_type = 5;
inline bool InputArray::has_data_type() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline void InputArray::clear_data_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.data_type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::toco::IODataType InputArray::data_type() const {
  // @@protoc_insertion_point(field_get:toco.InputArray.data_type)
  return _internal_data_type();
}
inline void InputArray::set_data_type(::toco::IODataType value) {
  _internal_set_data_type(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:toco.InputArray.data_type)
}
inline ::toco::IODataType InputArray::_internal_data_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::toco::IODataType>(_impl_.data_type_);
}
inline void InputArray::_internal_set_data_type(::toco::IODataType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  assert(::toco::IODataType_IsValid(value));
  _impl_.data_type_ = value;
}

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

// RnnState

// optional string state_array = 1;
inline bool RnnState::has_state_array() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline void RnnState::clear_state_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.state_array_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& RnnState::state_array() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.RnnState.state_array)
  return _internal_state_array();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RnnState::set_state_array(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.state_array_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:toco.RnnState.state_array)
}
inline std::string* RnnState::mutable_state_array() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_state_array();
  // @@protoc_insertion_point(field_mutable:toco.RnnState.state_array)
  return _s;
}
inline const std::string& RnnState::_internal_state_array() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.state_array_.Get();
}
inline void RnnState::_internal_set_state_array(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.state_array_.Set(value, GetArena());
}
inline std::string* RnnState::_internal_mutable_state_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.state_array_.Mutable( GetArena());
}
inline std::string* RnnState::release_state_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.RnnState.state_array)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.state_array_.Release();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.state_array_.Set("", GetArena());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return released;
}
inline void RnnState::set_allocated_state_array(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.state_array_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.state_array_.IsDefault()) {
          _impl_.state_array_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:toco.RnnState.state_array)
}

// optional string back_edge_source_array = 2;
inline bool RnnState::has_back_edge_source_array() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void RnnState::clear_back_edge_source_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.back_edge_source_array_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const std::string& RnnState::back_edge_source_array() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.RnnState.back_edge_source_array)
  return _internal_back_edge_source_array();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void RnnState::set_back_edge_source_array(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.back_edge_source_array_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:toco.RnnState.back_edge_source_array)
}
inline std::string* RnnState::mutable_back_edge_source_array() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_back_edge_source_array();
  // @@protoc_insertion_point(field_mutable:toco.RnnState.back_edge_source_array)
  return _s;
}
inline const std::string& RnnState::_internal_back_edge_source_array() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.back_edge_source_array_.Get();
}
inline void RnnState::_internal_set_back_edge_source_array(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.back_edge_source_array_.Set(value, GetArena());
}
inline std::string* RnnState::_internal_mutable_back_edge_source_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.back_edge_source_array_.Mutable( GetArena());
}
inline std::string* RnnState::release_back_edge_source_array() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.RnnState.back_edge_source_array)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.back_edge_source_array_.Release();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.back_edge_source_array_.Set("", GetArena());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return released;
}
inline void RnnState::set_allocated_back_edge_source_array(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.back_edge_source_array_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.back_edge_source_array_.IsDefault()) {
          _impl_.back_edge_source_array_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:toco.RnnState.back_edge_source_array)
}

// optional bool discardable = 5;
inline bool RnnState::has_discardable() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline void RnnState::clear_discardable() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.discardable_ = false;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline bool RnnState::discardable() const {
  // @@protoc_insertion_point(field_get:toco.RnnState.discardable)
  return _internal_discardable();
}
inline void RnnState::set_discardable(bool value) {
  _internal_set_discardable(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:toco.RnnState.discardable)
}
inline bool RnnState::_internal_discardable() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.discardable_;
}
inline void RnnState::_internal_set_discardable(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.discardable_ = value;
}

// optional int32 size = 3;
inline bool RnnState::has_size() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline void RnnState::clear_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int32_t RnnState::size() const {
  // @@protoc_insertion_point(field_get:toco.RnnState.size)
  return _internal_size();
}
inline void RnnState::set_size(::int32_t value) {
  _internal_set_size(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:toco.RnnState.size)
}
inline ::int32_t RnnState::_internal_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.size_;
}
inline void RnnState::_internal_set_size(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.size_ = value;
}

// optional int32 num_dims = 4;
inline bool RnnState::has_num_dims() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline void RnnState::clear_num_dims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_dims_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline ::int32_t RnnState::num_dims() const {
  // @@protoc_insertion_point(field_get:toco.RnnState.num_dims)
  return _internal_num_dims();
}
inline void RnnState::set_num_dims(::int32_t value) {
  _internal_set_num_dims(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:toco.RnnState.num_dims)
}
inline ::int32_t RnnState::_internal_num_dims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_dims_;
}
inline void RnnState::_internal_set_num_dims(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_dims_ = value;
}

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

// ArraysExtraInfo_Entry

// optional string name = 1;
inline bool ArraysExtraInfo_Entry::has_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline void ArraysExtraInfo_Entry::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& ArraysExtraInfo_Entry::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ArraysExtraInfo.Entry.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ArraysExtraInfo_Entry::set_name(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:toco.ArraysExtraInfo.Entry.name)
}
inline std::string* ArraysExtraInfo_Entry::mutable_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:toco.ArraysExtraInfo.Entry.name)
  return _s;
}
inline const std::string& ArraysExtraInfo_Entry::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void ArraysExtraInfo_Entry::_internal_set_name(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.name_.Set(value, GetArena());
}
inline std::string* ArraysExtraInfo_Entry::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.name_.Mutable( GetArena());
}
inline std::string* ArraysExtraInfo_Entry::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.ArraysExtraInfo.Entry.name)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.name_.Release();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.name_.Set("", GetArena());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return released;
}
inline void ArraysExtraInfo_Entry::set_allocated_name(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.name_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_.IsDefault()) {
          _impl_.name_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:toco.ArraysExtraInfo.Entry.name)
}

// optional string name_regexp = 7;
inline bool ArraysExtraInfo_Entry::has_name_regexp() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void ArraysExtraInfo_Entry::clear_name_regexp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_regexp_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const std::string& ArraysExtraInfo_Entry::name_regexp() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ArraysExtraInfo.Entry.name_regexp)
  return _internal_name_regexp();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ArraysExtraInfo_Entry::set_name_regexp(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.name_regexp_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:toco.ArraysExtraInfo.Entry.name_regexp)
}
inline std::string* ArraysExtraInfo_Entry::mutable_name_regexp() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_name_regexp();
  // @@protoc_insertion_point(field_mutable:toco.ArraysExtraInfo.Entry.name_regexp)
  return _s;
}
inline const std::string& ArraysExtraInfo_Entry::_internal_name_regexp() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_regexp_.Get();
}
inline void ArraysExtraInfo_Entry::_internal_set_name_regexp(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.name_regexp_.Set(value, GetArena());
}
inline std::string* ArraysExtraInfo_Entry::_internal_mutable_name_regexp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.name_regexp_.Mutable( GetArena());
}
inline std::string* ArraysExtraInfo_Entry::release_name_regexp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.ArraysExtraInfo.Entry.name_regexp)
  if ((_impl_._has_bits_[0] & 0x00000002u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* released = _impl_.name_regexp_.Release();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.name_regexp_.Set("", GetArena());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return released;
}
inline void ArraysExtraInfo_Entry::set_allocated_name_regexp(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.name_regexp_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.name_regexp_.IsDefault()) {
          _impl_.name_regexp_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:toco.ArraysExtraInfo.Entry.name_regexp)
}

// optional double min = 2;
inline bool ArraysExtraInfo_Entry::has_min() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline void ArraysExtraInfo_Entry::clear_min() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.min_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline double ArraysExtraInfo_Entry::min() const {
  // @@protoc_insertion_point(field_get:toco.ArraysExtraInfo.Entry.min)
  return _internal_min();
}
inline void ArraysExtraInfo_Entry::set_min(double value) {
  _internal_set_min(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:toco.ArraysExtraInfo.Entry.min)
}
inline double ArraysExtraInfo_Entry::_internal_min() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.min_;
}
inline void ArraysExtraInfo_Entry::_internal_set_min(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.min_ = value;
}

// optional double max = 3;
inline bool ArraysExtraInfo_Entry::has_max() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline void ArraysExtraInfo_Entry::clear_max() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.max_ = 0;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline double ArraysExtraInfo_Entry::max() const {
  // @@protoc_insertion_point(field_get:toco.ArraysExtraInfo.Entry.max)
  return _internal_max();
}
inline void ArraysExtraInfo_Entry::set_max(double value) {
  _internal_set_max(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:toco.ArraysExtraInfo.Entry.max)
}
inline double ArraysExtraInfo_Entry::_internal_max() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.max_;
}
inline void ArraysExtraInfo_Entry::_internal_set_max(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.max_ = value;
}

// optional .toco.IODataType data_type = 4;
inline bool ArraysExtraInfo_Entry::has_data_type() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  return value;
}
inline void ArraysExtraInfo_Entry::clear_data_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.data_type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline ::toco::IODataType ArraysExtraInfo_Entry::data_type() const {
  // @@protoc_insertion_point(field_get:toco.ArraysExtraInfo.Entry.data_type)
  return _internal_data_type();
}
inline void ArraysExtraInfo_Entry::set_data_type(::toco::IODataType value) {
  _internal_set_data_type(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:toco.ArraysExtraInfo.Entry.data_type)
}
inline ::toco::IODataType ArraysExtraInfo_Entry::_internal_data_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::toco::IODataType>(_impl_.data_type_);
}
inline void ArraysExtraInfo_Entry::_internal_set_data_type(::toco::IODataType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  assert(::toco::IODataType_IsValid(value));
  _impl_.data_type_ = value;
}

// optional .toco.InputArrayShape shape = 5;
inline bool ArraysExtraInfo_Entry::has_shape() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.shape_ != nullptr);
  return value;
}
inline void ArraysExtraInfo_Entry::clear_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.shape_ != nullptr) _impl_.shape_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const ::toco::InputArrayShape& ArraysExtraInfo_Entry::_internal_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::toco::InputArrayShape* p = _impl_.shape_;
  return p != nullptr ? *p : reinterpret_cast<const ::toco::InputArrayShape&>(::toco::_InputArrayShape_default_instance_);
}
inline const ::toco::InputArrayShape& ArraysExtraInfo_Entry::shape() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ArraysExtraInfo.Entry.shape)
  return _internal_shape();
}
inline void ArraysExtraInfo_Entry::unsafe_arena_set_allocated_shape(::toco::InputArrayShape* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.shape_);
  }
  _impl_.shape_ = reinterpret_cast<::toco::InputArrayShape*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:toco.ArraysExtraInfo.Entry.shape)
}
inline ::toco::InputArrayShape* ArraysExtraInfo_Entry::release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::toco::InputArrayShape* released = _impl_.shape_;
  _impl_.shape_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::toco::InputArrayShape* ArraysExtraInfo_Entry::unsafe_arena_release_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.ArraysExtraInfo.Entry.shape)

  _impl_._has_bits_[0] &= ~0x00000004u;
  ::toco::InputArrayShape* temp = _impl_.shape_;
  _impl_.shape_ = nullptr;
  return temp;
}
inline ::toco::InputArrayShape* ArraysExtraInfo_Entry::_internal_mutable_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.shape_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::toco::InputArrayShape>(GetArena());
    _impl_.shape_ = reinterpret_cast<::toco::InputArrayShape*>(p);
  }
  return _impl_.shape_;
}
inline ::toco::InputArrayShape* ArraysExtraInfo_Entry::mutable_shape() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000004u;
  ::toco::InputArrayShape* _msg = _internal_mutable_shape();
  // @@protoc_insertion_point(field_mutable:toco.ArraysExtraInfo.Entry.shape)
  return _msg;
}
inline void ArraysExtraInfo_Entry::set_allocated_shape(::toco::InputArrayShape* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.shape_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }

  _impl_.shape_ = reinterpret_cast<::toco::InputArrayShape*>(value);
  // @@protoc_insertion_point(field_set_allocated:toco.ArraysExtraInfo.Entry.shape)
}

// optional float constant_float_value = 6;
inline bool ArraysExtraInfo_Entry::has_constant_float_value() const {
  bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
  return value;
}
inline void ArraysExtraInfo_Entry::clear_constant_float_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.constant_float_value_ = 0;
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline float ArraysExtraInfo_Entry::constant_float_value() const {
  // @@protoc_insertion_point(field_get:toco.ArraysExtraInfo.Entry.constant_float_value)
  return _internal_constant_float_value();
}
inline void ArraysExtraInfo_Entry::set_constant_float_value(float value) {
  _internal_set_constant_float_value(value);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@protoc_insertion_point(field_set:toco.ArraysExtraInfo.Entry.constant_float_value)
}
inline float ArraysExtraInfo_Entry::_internal_constant_float_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.constant_float_value_;
}
inline void ArraysExtraInfo_Entry::_internal_set_constant_float_value(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.constant_float_value_ = value;
}

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

// ArraysExtraInfo

// repeated .toco.ArraysExtraInfo.Entry entries = 1;
inline int ArraysExtraInfo::_internal_entries_size() const {
  return _internal_entries().size();
}
inline int ArraysExtraInfo::entries_size() const {
  return _internal_entries_size();
}
inline void ArraysExtraInfo::clear_entries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entries_.Clear();
}
inline ::toco::ArraysExtraInfo_Entry* ArraysExtraInfo::mutable_entries(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:toco.ArraysExtraInfo.entries)
  return _internal_mutable_entries()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::toco::ArraysExtraInfo_Entry>* ArraysExtraInfo::mutable_entries()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:toco.ArraysExtraInfo.entries)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_entries();
}
inline const ::toco::ArraysExtraInfo_Entry& ArraysExtraInfo::entries(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ArraysExtraInfo.entries)
  return _internal_entries().Get(index);
}
inline ::toco::ArraysExtraInfo_Entry* ArraysExtraInfo::add_entries() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::toco::ArraysExtraInfo_Entry* _add = _internal_mutable_entries()->Add();
  // @@protoc_insertion_point(field_add:toco.ArraysExtraInfo.entries)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::toco::ArraysExtraInfo_Entry>& ArraysExtraInfo::entries() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:toco.ArraysExtraInfo.entries)
  return _internal_entries();
}
inline const ::google::protobuf::RepeatedPtrField<::toco::ArraysExtraInfo_Entry>&
ArraysExtraInfo::_internal_entries() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entries_;
}
inline ::google::protobuf::RepeatedPtrField<::toco::ArraysExtraInfo_Entry>*
ArraysExtraInfo::_internal_mutable_entries() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.entries_;
}

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

// ModelFlags_ModelCheck

// optional string count_type = 1 [default = "None"];
inline bool ModelFlags_ModelCheck::has_count_type() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline void ModelFlags_ModelCheck::clear_count_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.count_type_.ClearToDefault(::toco::ModelFlags_ModelCheck::Impl_::_i_give_permission_to_break_this_code_default_count_type_, GetArena());
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& ModelFlags_ModelCheck::count_type() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.ModelCheck.count_type)
  if (_impl_.count_type_.IsDefault()) {
    return Impl_::_i_give_permission_to_break_this_code_default_count_type_.get();
  }
  return _internal_count_type();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ModelFlags_ModelCheck::set_count_type(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.count_type_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:toco.ModelFlags.ModelCheck.count_type)
}
inline std::string* ModelFlags_ModelCheck::mutable_count_type() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_count_type();
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.ModelCheck.count_type)
  return _s;
}
inline const std::string& ModelFlags_ModelCheck::_internal_count_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.count_type_.Get();
}
inline void ModelFlags_ModelCheck::_internal_set_count_type(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.count_type_.Set(value, GetArena());
}
inline std::string* ModelFlags_ModelCheck::_internal_mutable_count_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.count_type_.Mutable(::toco::ModelFlags_ModelCheck::Impl_::_i_give_permission_to_break_this_code_default_count_type_, GetArena());
}
inline std::string* ModelFlags_ModelCheck::release_count_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.ModelFlags.ModelCheck.count_type)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  return _impl_.count_type_.Release();
}
inline void ModelFlags_ModelCheck::set_allocated_count_type(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.count_type_.SetAllocated(value, GetArena());
  // @@protoc_insertion_point(field_set_allocated:toco.ModelFlags.ModelCheck.count_type)
}

// optional int32 count_min = 2 [default = -1];
inline bool ModelFlags_ModelCheck::has_count_min() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline void ModelFlags_ModelCheck::clear_count_min() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.count_min_ = -1;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline ::int32_t ModelFlags_ModelCheck::count_min() const {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.ModelCheck.count_min)
  return _internal_count_min();
}
inline void ModelFlags_ModelCheck::set_count_min(::int32_t value) {
  _internal_set_count_min(value);
  _impl_._has_bits_[0] |= 0x00000002u;
  // @@protoc_insertion_point(field_set:toco.ModelFlags.ModelCheck.count_min)
}
inline ::int32_t ModelFlags_ModelCheck::_internal_count_min() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.count_min_;
}
inline void ModelFlags_ModelCheck::_internal_set_count_min(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.count_min_ = value;
}

// optional int32 count_max = 3 [default = -1];
inline bool ModelFlags_ModelCheck::has_count_max() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline void ModelFlags_ModelCheck::clear_count_max() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.count_max_ = -1;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline ::int32_t ModelFlags_ModelCheck::count_max() const {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.ModelCheck.count_max)
  return _internal_count_max();
}
inline void ModelFlags_ModelCheck::set_count_max(::int32_t value) {
  _internal_set_count_max(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:toco.ModelFlags.ModelCheck.count_max)
}
inline ::int32_t ModelFlags_ModelCheck::_internal_count_max() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.count_max_;
}
inline void ModelFlags_ModelCheck::_internal_set_count_max(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.count_max_ = value;
}

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

// ModelFlags

// repeated .toco.InputArray input_arrays = 1;
inline int ModelFlags::_internal_input_arrays_size() const {
  return _internal_input_arrays().size();
}
inline int ModelFlags::input_arrays_size() const {
  return _internal_input_arrays_size();
}
inline void ModelFlags::clear_input_arrays() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.input_arrays_.Clear();
}
inline ::toco::InputArray* ModelFlags::mutable_input_arrays(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.input_arrays)
  return _internal_mutable_input_arrays()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::toco::InputArray>* ModelFlags::mutable_input_arrays()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:toco.ModelFlags.input_arrays)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_input_arrays();
}
inline const ::toco::InputArray& ModelFlags::input_arrays(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.input_arrays)
  return _internal_input_arrays().Get(index);
}
inline ::toco::InputArray* ModelFlags::add_input_arrays() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::toco::InputArray* _add = _internal_mutable_input_arrays()->Add();
  // @@protoc_insertion_point(field_add:toco.ModelFlags.input_arrays)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::toco::InputArray>& ModelFlags::input_arrays() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:toco.ModelFlags.input_arrays)
  return _internal_input_arrays();
}
inline const ::google::protobuf::RepeatedPtrField<::toco::InputArray>&
ModelFlags::_internal_input_arrays() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.input_arrays_;
}
inline ::google::protobuf::RepeatedPtrField<::toco::InputArray>*
ModelFlags::_internal_mutable_input_arrays() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.input_arrays_;
}

// repeated string output_arrays = 2;
inline int ModelFlags::_internal_output_arrays_size() const {
  return _internal_output_arrays().size();
}
inline int ModelFlags::output_arrays_size() const {
  return _internal_output_arrays_size();
}
inline void ModelFlags::clear_output_arrays() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_arrays_.Clear();
}
inline std::string* ModelFlags::add_output_arrays() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  std::string* _s = _internal_mutable_output_arrays()->Add();
  // @@protoc_insertion_point(field_add_mutable:toco.ModelFlags.output_arrays)
  return _s;
}
inline const std::string& ModelFlags::output_arrays(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.output_arrays)
  return _internal_output_arrays().Get(index);
}
inline std::string* ModelFlags::mutable_output_arrays(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.output_arrays)
  return _internal_mutable_output_arrays()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void ModelFlags::set_output_arrays(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_output_arrays()->Mutable(index),
      std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:toco.ModelFlags.output_arrays)
}
template <typename Arg_, typename... Args_>
inline void ModelFlags::add_output_arrays(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_output_arrays(),
                               std::forward<Arg_>(value),
                               args... );
  // @@protoc_insertion_point(field_add:toco.ModelFlags.output_arrays)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ModelFlags::output_arrays() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:toco.ModelFlags.output_arrays)
  return _internal_output_arrays();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ModelFlags::mutable_output_arrays() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:toco.ModelFlags.output_arrays)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_output_arrays();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ModelFlags::_internal_output_arrays() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_arrays_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ModelFlags::_internal_mutable_output_arrays() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.output_arrays_;
}

// repeated string control_output_arrays = 24;
inline int ModelFlags::_internal_control_output_arrays_size() const {
  return _internal_control_output_arrays().size();
}
inline int ModelFlags::control_output_arrays_size() const {
  return _internal_control_output_arrays_size();
}
inline void ModelFlags::clear_control_output_arrays() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.control_output_arrays_.Clear();
}
inline std::string* ModelFlags::add_control_output_arrays() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  std::string* _s = _internal_mutable_control_output_arrays()->Add();
  // @@protoc_insertion_point(field_add_mutable:toco.ModelFlags.control_output_arrays)
  return _s;
}
inline const std::string& ModelFlags::control_output_arrays(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.control_output_arrays)
  return _internal_control_output_arrays().Get(index);
}
inline std::string* ModelFlags::mutable_control_output_arrays(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.control_output_arrays)
  return _internal_mutable_control_output_arrays()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void ModelFlags::set_control_output_arrays(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_control_output_arrays()->Mutable(index),
      std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:toco.ModelFlags.control_output_arrays)
}
template <typename Arg_, typename... Args_>
inline void ModelFlags::add_control_output_arrays(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_control_output_arrays(),
                               std::forward<Arg_>(value),
                               args... );
  // @@protoc_insertion_point(field_add:toco.ModelFlags.control_output_arrays)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ModelFlags::control_output_arrays() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:toco.ModelFlags.control_output_arrays)
  return _internal_control_output_arrays();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ModelFlags::mutable_control_output_arrays() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:toco.ModelFlags.control_output_arrays)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_control_output_arrays();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ModelFlags::_internal_control_output_arrays() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.control_output_arrays_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ModelFlags::_internal_mutable_control_output_arrays() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.control_output_arrays_;
}

// optional bool variable_batch = 10;
inline bool ModelFlags::has_variable_batch() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline void ModelFlags::clear_variable_batch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.variable_batch_ = false;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline bool ModelFlags::variable_batch() const {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.variable_batch)
  return _internal_variable_batch();
}
inline void ModelFlags::set_variable_batch(bool value) {
  _internal_set_variable_batch(value);
  _impl_._has_bits_[0] |= 0x00000004u;
  // @@protoc_insertion_point(field_set:toco.ModelFlags.variable_batch)
}
inline bool ModelFlags::_internal_variable_batch() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.variable_batch_;
}
inline void ModelFlags::_internal_set_variable_batch(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.variable_batch_ = value;
}

// repeated .toco.RnnState rnn_states = 12;
inline int ModelFlags::_internal_rnn_states_size() const {
  return _internal_rnn_states().size();
}
inline int ModelFlags::rnn_states_size() const {
  return _internal_rnn_states_size();
}
inline void ModelFlags::clear_rnn_states() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rnn_states_.Clear();
}
inline ::toco::RnnState* ModelFlags::mutable_rnn_states(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.rnn_states)
  return _internal_mutable_rnn_states()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::toco::RnnState>* ModelFlags::mutable_rnn_states()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:toco.ModelFlags.rnn_states)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_rnn_states();
}
inline const ::toco::RnnState& ModelFlags::rnn_states(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.rnn_states)
  return _internal_rnn_states().Get(index);
}
inline ::toco::RnnState* ModelFlags::add_rnn_states() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::toco::RnnState* _add = _internal_mutable_rnn_states()->Add();
  // @@protoc_insertion_point(field_add:toco.ModelFlags.rnn_states)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::toco::RnnState>& ModelFlags::rnn_states() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:toco.ModelFlags.rnn_states)
  return _internal_rnn_states();
}
inline const ::google::protobuf::RepeatedPtrField<::toco::RnnState>&
ModelFlags::_internal_rnn_states() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.rnn_states_;
}
inline ::google::protobuf::RepeatedPtrField<::toco::RnnState>*
ModelFlags::_internal_mutable_rnn_states() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.rnn_states_;
}

// repeated .toco.ModelFlags.ModelCheck model_checks = 14;
inline int ModelFlags::_internal_model_checks_size() const {
  return _internal_model_checks().size();
}
inline int ModelFlags::model_checks_size() const {
  return _internal_model_checks_size();
}
inline void ModelFlags::clear_model_checks() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.model_checks_.Clear();
}
inline ::toco::ModelFlags_ModelCheck* ModelFlags::mutable_model_checks(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.model_checks)
  return _internal_mutable_model_checks()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::toco::ModelFlags_ModelCheck>* ModelFlags::mutable_model_checks()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:toco.ModelFlags.model_checks)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_model_checks();
}
inline const ::toco::ModelFlags_ModelCheck& ModelFlags::model_checks(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.model_checks)
  return _internal_model_checks().Get(index);
}
inline ::toco::ModelFlags_ModelCheck* ModelFlags::add_model_checks() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::toco::ModelFlags_ModelCheck* _add = _internal_mutable_model_checks()->Add();
  // @@protoc_insertion_point(field_add:toco.ModelFlags.model_checks)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::toco::ModelFlags_ModelCheck>& ModelFlags::model_checks() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:toco.ModelFlags.model_checks)
  return _internal_model_checks();
}
inline const ::google::protobuf::RepeatedPtrField<::toco::ModelFlags_ModelCheck>&
ModelFlags::_internal_model_checks() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.model_checks_;
}
inline ::google::protobuf::RepeatedPtrField<::toco::ModelFlags_ModelCheck>*
ModelFlags::_internal_mutable_model_checks() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.model_checks_;
}

// optional bool allow_nonexistent_arrays = 16;
inline bool ModelFlags::has_allow_nonexistent_arrays() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline void ModelFlags::clear_allow_nonexistent_arrays() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.allow_nonexistent_arrays_ = false;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline bool ModelFlags::allow_nonexistent_arrays() const {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.allow_nonexistent_arrays)
  return _internal_allow_nonexistent_arrays();
}
inline void ModelFlags::set_allow_nonexistent_arrays(bool value) {
  _internal_set_allow_nonexistent_arrays(value);
  _impl_._has_bits_[0] |= 0x00000008u;
  // @@protoc_insertion_point(field_set:toco.ModelFlags.allow_nonexistent_arrays)
}
inline bool ModelFlags::_internal_allow_nonexistent_arrays() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.allow_nonexistent_arrays_;
}
inline void ModelFlags::_internal_set_allow_nonexistent_arrays(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.allow_nonexistent_arrays_ = value;
}

// optional bool allow_nonascii_arrays = 17;
inline bool ModelFlags::has_allow_nonascii_arrays() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline void ModelFlags::clear_allow_nonascii_arrays() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.allow_nonascii_arrays_ = false;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline bool ModelFlags::allow_nonascii_arrays() const {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.allow_nonascii_arrays)
  return _internal_allow_nonascii_arrays();
}
inline void ModelFlags::set_allow_nonascii_arrays(bool value) {
  _internal_set_allow_nonascii_arrays(value);
  _impl_._has_bits_[0] |= 0x00000010u;
  // @@protoc_insertion_point(field_set:toco.ModelFlags.allow_nonascii_arrays)
}
inline bool ModelFlags::_internal_allow_nonascii_arrays() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.allow_nonascii_arrays_;
}
inline void ModelFlags::_internal_set_allow_nonascii_arrays(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.allow_nonascii_arrays_ = value;
}

// optional .toco.ArraysExtraInfo arrays_extra_info = 18;
inline bool ModelFlags::has_arrays_extra_info() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.arrays_extra_info_ != nullptr);
  return value;
}
inline void ModelFlags::clear_arrays_extra_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.arrays_extra_info_ != nullptr) _impl_.arrays_extra_info_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::toco::ArraysExtraInfo& ModelFlags::_internal_arrays_extra_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::toco::ArraysExtraInfo* p = _impl_.arrays_extra_info_;
  return p != nullptr ? *p : reinterpret_cast<const ::toco::ArraysExtraInfo&>(::toco::_ArraysExtraInfo_default_instance_);
}
inline const ::toco::ArraysExtraInfo& ModelFlags::arrays_extra_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.arrays_extra_info)
  return _internal_arrays_extra_info();
}
inline void ModelFlags::unsafe_arena_set_allocated_arrays_extra_info(::toco::ArraysExtraInfo* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.arrays_extra_info_);
  }
  _impl_.arrays_extra_info_ = reinterpret_cast<::toco::ArraysExtraInfo*>(value);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:toco.ModelFlags.arrays_extra_info)
}
inline ::toco::ArraysExtraInfo* ModelFlags::release_arrays_extra_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::toco::ArraysExtraInfo* released = _impl_.arrays_extra_info_;
  _impl_.arrays_extra_info_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
  released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  if (GetArena() == nullptr) {
    delete old;
  }
#else   // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArena() != nullptr) {
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return released;
}
inline ::toco::ArraysExtraInfo* ModelFlags::unsafe_arena_release_arrays_extra_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.ModelFlags.arrays_extra_info)

  _impl_._has_bits_[0] &= ~0x00000002u;
  ::toco::ArraysExtraInfo* temp = _impl_.arrays_extra_info_;
  _impl_.arrays_extra_info_ = nullptr;
  return temp;
}
inline ::toco::ArraysExtraInfo* ModelFlags::_internal_mutable_arrays_extra_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.arrays_extra_info_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::toco::ArraysExtraInfo>(GetArena());
    _impl_.arrays_extra_info_ = reinterpret_cast<::toco::ArraysExtraInfo*>(p);
  }
  return _impl_.arrays_extra_info_;
}
inline ::toco::ArraysExtraInfo* ModelFlags::mutable_arrays_extra_info() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  _impl_._has_bits_[0] |= 0x00000002u;
  ::toco::ArraysExtraInfo* _msg = _internal_mutable_arrays_extra_info();
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.arrays_extra_info)
  return _msg;
}
inline void ModelFlags::set_allocated_arrays_extra_info(::toco::ArraysExtraInfo* value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete (_impl_.arrays_extra_info_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = (value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }

  _impl_.arrays_extra_info_ = reinterpret_cast<::toco::ArraysExtraInfo*>(value);
  // @@protoc_insertion_point(field_set_allocated:toco.ModelFlags.arrays_extra_info)
}

// optional bool change_concat_input_ranges = 19 [default = true];
inline bool ModelFlags::has_change_concat_input_ranges() const {
  bool value = (_impl_._has_bits_[0] & 0x00000100u) != 0;
  return value;
}
inline void ModelFlags::clear_change_concat_input_ranges() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.change_concat_input_ranges_ = true;
  _impl_._has_bits_[0] &= ~0x00000100u;
}
inline bool ModelFlags::change_concat_input_ranges() const {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.change_concat_input_ranges)
  return _internal_change_concat_input_ranges();
}
inline void ModelFlags::set_change_concat_input_ranges(bool value) {
  _internal_set_change_concat_input_ranges(value);
  _impl_._has_bits_[0] |= 0x00000100u;
  // @@protoc_insertion_point(field_set:toco.ModelFlags.change_concat_input_ranges)
}
inline bool ModelFlags::_internal_change_concat_input_ranges() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.change_concat_input_ranges_;
}
inline void ModelFlags::_internal_set_change_concat_input_ranges(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.change_concat_input_ranges_ = value;
}

// optional string saved_model_dir = 20;
inline bool ModelFlags::has_saved_model_dir() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline void ModelFlags::clear_saved_model_dir() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.saved_model_dir_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& ModelFlags::saved_model_dir() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.saved_model_dir)
  return _internal_saved_model_dir();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void ModelFlags::set_saved_model_dir(Arg_&& arg,
                                                     Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.saved_model_dir_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:toco.ModelFlags.saved_model_dir)
}
inline std::string* ModelFlags::mutable_saved_model_dir() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  std::string* _s = _internal_mutable_saved_model_dir();
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.saved_model_dir)
  return _s;
}
inline const std::string& ModelFlags::_internal_saved_model_dir() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.saved_model_dir_.Get();
}
inline void ModelFlags::_internal_set_saved_model_dir(const std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.saved_model_dir_.Set(value, GetArena());
}
inline std::string* ModelFlags::_internal_mutable_saved_model_dir() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.saved_model_dir_.Mutable( GetArena());
}
inline std::string* ModelFlags::release_saved_model_dir() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:toco.ModelFlags.saved_model_dir)
  if ((_impl_._has_bits_[0] & 0x00000001u) == 0) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* released = _impl_.saved_model_dir_.Release();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.saved_model_dir_.Set("", GetArena());
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return released;
}
inline void ModelFlags::set_allocated_saved_model_dir(std::string* value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.saved_model_dir_.SetAllocated(value, GetArena());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.saved_model_dir_.IsDefault()) {
          _impl_.saved_model_dir_.Set("", GetArena());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:toco.ModelFlags.saved_model_dir)
}

// optional int32 saved_model_version = 21;
inline bool ModelFlags::has_saved_model_version() const {
  bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
  return value;
}
inline void ModelFlags::clear_saved_model_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.saved_model_version_ = 0;
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline ::int32_t ModelFlags::saved_model_version() const {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.saved_model_version)
  return _internal_saved_model_version();
}
inline void ModelFlags::set_saved_model_version(::int32_t value) {
  _internal_set_saved_model_version(value);
  _impl_._has_bits_[0] |= 0x00000040u;
  // @@protoc_insertion_point(field_set:toco.ModelFlags.saved_model_version)
}
inline ::int32_t ModelFlags::_internal_saved_model_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.saved_model_version_;
}
inline void ModelFlags::_internal_set_saved_model_version(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.saved_model_version_ = value;
}

// repeated string saved_model_tags = 22;
inline int ModelFlags::_internal_saved_model_tags_size() const {
  return _internal_saved_model_tags().size();
}
inline int ModelFlags::saved_model_tags_size() const {
  return _internal_saved_model_tags_size();
}
inline void ModelFlags::clear_saved_model_tags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.saved_model_tags_.Clear();
}
inline std::string* ModelFlags::add_saved_model_tags() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  std::string* _s = _internal_mutable_saved_model_tags()->Add();
  // @@protoc_insertion_point(field_add_mutable:toco.ModelFlags.saved_model_tags)
  return _s;
}
inline const std::string& ModelFlags::saved_model_tags(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.saved_model_tags)
  return _internal_saved_model_tags().Get(index);
}
inline std::string* ModelFlags::mutable_saved_model_tags(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.saved_model_tags)
  return _internal_mutable_saved_model_tags()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void ModelFlags::set_saved_model_tags(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_saved_model_tags()->Mutable(index),
      std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:toco.ModelFlags.saved_model_tags)
}
template <typename Arg_, typename... Args_>
inline void ModelFlags::add_saved_model_tags(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_saved_model_tags(),
                               std::forward<Arg_>(value),
                               args... );
  // @@protoc_insertion_point(field_add:toco.ModelFlags.saved_model_tags)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ModelFlags::saved_model_tags() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:toco.ModelFlags.saved_model_tags)
  return _internal_saved_model_tags();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ModelFlags::mutable_saved_model_tags() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:toco.ModelFlags.saved_model_tags)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_saved_model_tags();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ModelFlags::_internal_saved_model_tags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.saved_model_tags_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ModelFlags::_internal_mutable_saved_model_tags() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.saved_model_tags_;
}

// repeated string saved_model_exported_names = 23;
inline int ModelFlags::_internal_saved_model_exported_names_size() const {
  return _internal_saved_model_exported_names().size();
}
inline int ModelFlags::saved_model_exported_names_size() const {
  return _internal_saved_model_exported_names_size();
}
inline void ModelFlags::clear_saved_model_exported_names() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.saved_model_exported_names_.Clear();
}
inline std::string* ModelFlags::add_saved_model_exported_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  std::string* _s = _internal_mutable_saved_model_exported_names()->Add();
  // @@protoc_insertion_point(field_add_mutable:toco.ModelFlags.saved_model_exported_names)
  return _s;
}
inline const std::string& ModelFlags::saved_model_exported_names(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.saved_model_exported_names)
  return _internal_saved_model_exported_names().Get(index);
}
inline std::string* ModelFlags::mutable_saved_model_exported_names(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:toco.ModelFlags.saved_model_exported_names)
  return _internal_mutable_saved_model_exported_names()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void ModelFlags::set_saved_model_exported_names(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_saved_model_exported_names()->Mutable(index),
      std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:toco.ModelFlags.saved_model_exported_names)
}
template <typename Arg_, typename... Args_>
inline void ModelFlags::add_saved_model_exported_names(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(*_internal_mutable_saved_model_exported_names(),
                               std::forward<Arg_>(value),
                               args... );
  // @@protoc_insertion_point(field_add:toco.ModelFlags.saved_model_exported_names)
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ModelFlags::saved_model_exported_names() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:toco.ModelFlags.saved_model_exported_names)
  return _internal_saved_model_exported_names();
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ModelFlags::mutable_saved_model_exported_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable_list:toco.ModelFlags.saved_model_exported_names)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_saved_model_exported_names();
}
inline const ::google::protobuf::RepeatedPtrField<std::string>&
ModelFlags::_internal_saved_model_exported_names() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.saved_model_exported_names_;
}
inline ::google::protobuf::RepeatedPtrField<std::string>*
ModelFlags::_internal_mutable_saved_model_exported_names() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.saved_model_exported_names_;
}

// optional bool use_hlo_import = 25;
inline bool ModelFlags::has_use_hlo_import() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  return value;
}
inline void ModelFlags::clear_use_hlo_import() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_hlo_import_ = false;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline bool ModelFlags::use_hlo_import() const {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.use_hlo_import)
  return _internal_use_hlo_import();
}
inline void ModelFlags::set_use_hlo_import(bool value) {
  _internal_set_use_hlo_import(value);
  _impl_._has_bits_[0] |= 0x00000020u;
  // @@protoc_insertion_point(field_set:toco.ModelFlags.use_hlo_import)
}
inline bool ModelFlags::_internal_use_hlo_import() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.use_hlo_import_;
}
inline void ModelFlags::_internal_set_use_hlo_import(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.use_hlo_import_ = value;
}

// optional .toco.ModelFlags.HloFileType hlo_file_type = 26;
inline bool ModelFlags::has_hlo_file_type() const {
  bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0;
  return value;
}
inline void ModelFlags::clear_hlo_file_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.hlo_file_type_ = 0;
  _impl_._has_bits_[0] &= ~0x00000080u;
}
inline ::toco::ModelFlags_HloFileType ModelFlags::hlo_file_type() const {
  // @@protoc_insertion_point(field_get:toco.ModelFlags.hlo_file_type)
  return _internal_hlo_file_type();
}
inline void ModelFlags::set_hlo_file_type(::toco::ModelFlags_HloFileType value) {
  _internal_set_hlo_file_type(value);
  _impl_._has_bits_[0] |= 0x00000080u;
  // @@protoc_insertion_point(field_set:toco.ModelFlags.hlo_file_type)
}
inline ::toco::ModelFlags_HloFileType ModelFlags::_internal_hlo_file_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::toco::ModelFlags_HloFileType>(_impl_.hlo_file_type_);
}
inline void ModelFlags::_internal_set_hlo_file_type(::toco::ModelFlags_HloFileType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  assert(::toco::ModelFlags_HloFileType_IsValid(value));
  _impl_.hlo_file_type_ = value;
}

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

// @@protoc_insertion_point(namespace_scope)
}  // namespace toco


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::toco::ModelFlags_HloFileType> : std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor<::toco::ModelFlags_HloFileType>() {
  return ::toco::ModelFlags_HloFileType_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_tensorflow_2flite_2ftoco_2fmodel_5fflags_2eproto_2epb_2eh
