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

#ifndef GOOGLE_PROTOBUF_INCLUDED_s2clientprotocol_2fui_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_s2clientprotocol_2fui_2eproto

#include <limits>
#include <string>

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

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

// Internal implementation detail -- do not use these members.
struct TableStruct_s2clientprotocol_2fui_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[18]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_s2clientprotocol_2fui_2eproto;
namespace SC2APIProtocol {
class ActionCargoPanelUnload;
class ActionCargoPanelUnloadDefaultTypeInternal;
extern ActionCargoPanelUnloadDefaultTypeInternal _ActionCargoPanelUnload_default_instance_;
class ActionControlGroup;
class ActionControlGroupDefaultTypeInternal;
extern ActionControlGroupDefaultTypeInternal _ActionControlGroup_default_instance_;
class ActionMultiPanel;
class ActionMultiPanelDefaultTypeInternal;
extern ActionMultiPanelDefaultTypeInternal _ActionMultiPanel_default_instance_;
class ActionProductionPanelRemoveFromQueue;
class ActionProductionPanelRemoveFromQueueDefaultTypeInternal;
extern ActionProductionPanelRemoveFromQueueDefaultTypeInternal _ActionProductionPanelRemoveFromQueue_default_instance_;
class ActionSelectArmy;
class ActionSelectArmyDefaultTypeInternal;
extern ActionSelectArmyDefaultTypeInternal _ActionSelectArmy_default_instance_;
class ActionSelectIdleWorker;
class ActionSelectIdleWorkerDefaultTypeInternal;
extern ActionSelectIdleWorkerDefaultTypeInternal _ActionSelectIdleWorker_default_instance_;
class ActionSelectLarva;
class ActionSelectLarvaDefaultTypeInternal;
extern ActionSelectLarvaDefaultTypeInternal _ActionSelectLarva_default_instance_;
class ActionSelectWarpGates;
class ActionSelectWarpGatesDefaultTypeInternal;
extern ActionSelectWarpGatesDefaultTypeInternal _ActionSelectWarpGates_default_instance_;
class ActionToggleAutocast;
class ActionToggleAutocastDefaultTypeInternal;
extern ActionToggleAutocastDefaultTypeInternal _ActionToggleAutocast_default_instance_;
class ActionUI;
class ActionUIDefaultTypeInternal;
extern ActionUIDefaultTypeInternal _ActionUI_default_instance_;
class BuildItem;
class BuildItemDefaultTypeInternal;
extern BuildItemDefaultTypeInternal _BuildItem_default_instance_;
class CargoPanel;
class CargoPanelDefaultTypeInternal;
extern CargoPanelDefaultTypeInternal _CargoPanel_default_instance_;
class ControlGroup;
class ControlGroupDefaultTypeInternal;
extern ControlGroupDefaultTypeInternal _ControlGroup_default_instance_;
class MultiPanel;
class MultiPanelDefaultTypeInternal;
extern MultiPanelDefaultTypeInternal _MultiPanel_default_instance_;
class ObservationUI;
class ObservationUIDefaultTypeInternal;
extern ObservationUIDefaultTypeInternal _ObservationUI_default_instance_;
class ProductionPanel;
class ProductionPanelDefaultTypeInternal;
extern ProductionPanelDefaultTypeInternal _ProductionPanel_default_instance_;
class SinglePanel;
class SinglePanelDefaultTypeInternal;
extern SinglePanelDefaultTypeInternal _SinglePanel_default_instance_;
class UnitInfo;
class UnitInfoDefaultTypeInternal;
extern UnitInfoDefaultTypeInternal _UnitInfo_default_instance_;
}  // namespace SC2APIProtocol
PROTOBUF_NAMESPACE_OPEN
template<> ::SC2APIProtocol::ActionCargoPanelUnload* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionCargoPanelUnload>(Arena*);
template<> ::SC2APIProtocol::ActionControlGroup* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionControlGroup>(Arena*);
template<> ::SC2APIProtocol::ActionMultiPanel* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionMultiPanel>(Arena*);
template<> ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionProductionPanelRemoveFromQueue>(Arena*);
template<> ::SC2APIProtocol::ActionSelectArmy* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionSelectArmy>(Arena*);
template<> ::SC2APIProtocol::ActionSelectIdleWorker* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionSelectIdleWorker>(Arena*);
template<> ::SC2APIProtocol::ActionSelectLarva* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionSelectLarva>(Arena*);
template<> ::SC2APIProtocol::ActionSelectWarpGates* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionSelectWarpGates>(Arena*);
template<> ::SC2APIProtocol::ActionToggleAutocast* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionToggleAutocast>(Arena*);
template<> ::SC2APIProtocol::ActionUI* Arena::CreateMaybeMessage<::SC2APIProtocol::ActionUI>(Arena*);
template<> ::SC2APIProtocol::BuildItem* Arena::CreateMaybeMessage<::SC2APIProtocol::BuildItem>(Arena*);
template<> ::SC2APIProtocol::CargoPanel* Arena::CreateMaybeMessage<::SC2APIProtocol::CargoPanel>(Arena*);
template<> ::SC2APIProtocol::ControlGroup* Arena::CreateMaybeMessage<::SC2APIProtocol::ControlGroup>(Arena*);
template<> ::SC2APIProtocol::MultiPanel* Arena::CreateMaybeMessage<::SC2APIProtocol::MultiPanel>(Arena*);
template<> ::SC2APIProtocol::ObservationUI* Arena::CreateMaybeMessage<::SC2APIProtocol::ObservationUI>(Arena*);
template<> ::SC2APIProtocol::ProductionPanel* Arena::CreateMaybeMessage<::SC2APIProtocol::ProductionPanel>(Arena*);
template<> ::SC2APIProtocol::SinglePanel* Arena::CreateMaybeMessage<::SC2APIProtocol::SinglePanel>(Arena*);
template<> ::SC2APIProtocol::UnitInfo* Arena::CreateMaybeMessage<::SC2APIProtocol::UnitInfo>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace SC2APIProtocol {

enum ActionControlGroup_ControlGroupAction : int {
  ActionControlGroup_ControlGroupAction_Recall = 1,
  ActionControlGroup_ControlGroupAction_Set = 2,
  ActionControlGroup_ControlGroupAction_Append = 3,
  ActionControlGroup_ControlGroupAction_SetAndSteal = 4,
  ActionControlGroup_ControlGroupAction_AppendAndSteal = 5
};
bool ActionControlGroup_ControlGroupAction_IsValid(int value);
constexpr ActionControlGroup_ControlGroupAction ActionControlGroup_ControlGroupAction_ControlGroupAction_MIN = ActionControlGroup_ControlGroupAction_Recall;
constexpr ActionControlGroup_ControlGroupAction ActionControlGroup_ControlGroupAction_ControlGroupAction_MAX = ActionControlGroup_ControlGroupAction_AppendAndSteal;
constexpr int ActionControlGroup_ControlGroupAction_ControlGroupAction_ARRAYSIZE = ActionControlGroup_ControlGroupAction_ControlGroupAction_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ActionControlGroup_ControlGroupAction_descriptor();
template<typename T>
inline const std::string& ActionControlGroup_ControlGroupAction_Name(T enum_t_value) {
  static_assert(::std::is_same<T, ActionControlGroup_ControlGroupAction>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function ActionControlGroup_ControlGroupAction_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    ActionControlGroup_ControlGroupAction_descriptor(), enum_t_value);
}
inline bool ActionControlGroup_ControlGroupAction_Parse(
    const std::string& name, ActionControlGroup_ControlGroupAction* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<ActionControlGroup_ControlGroupAction>(
    ActionControlGroup_ControlGroupAction_descriptor(), name, value);
}
enum ActionSelectIdleWorker_Type : int {
  ActionSelectIdleWorker_Type_Set = 1,
  ActionSelectIdleWorker_Type_Add = 2,
  ActionSelectIdleWorker_Type_All = 3,
  ActionSelectIdleWorker_Type_AddAll = 4
};
bool ActionSelectIdleWorker_Type_IsValid(int value);
constexpr ActionSelectIdleWorker_Type ActionSelectIdleWorker_Type_Type_MIN = ActionSelectIdleWorker_Type_Set;
constexpr ActionSelectIdleWorker_Type ActionSelectIdleWorker_Type_Type_MAX = ActionSelectIdleWorker_Type_AddAll;
constexpr int ActionSelectIdleWorker_Type_Type_ARRAYSIZE = ActionSelectIdleWorker_Type_Type_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ActionSelectIdleWorker_Type_descriptor();
template<typename T>
inline const std::string& ActionSelectIdleWorker_Type_Name(T enum_t_value) {
  static_assert(::std::is_same<T, ActionSelectIdleWorker_Type>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function ActionSelectIdleWorker_Type_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    ActionSelectIdleWorker_Type_descriptor(), enum_t_value);
}
inline bool ActionSelectIdleWorker_Type_Parse(
    const std::string& name, ActionSelectIdleWorker_Type* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<ActionSelectIdleWorker_Type>(
    ActionSelectIdleWorker_Type_descriptor(), name, value);
}
enum ActionMultiPanel_Type : int {
  ActionMultiPanel_Type_SingleSelect = 1,
  ActionMultiPanel_Type_DeselectUnit = 2,
  ActionMultiPanel_Type_SelectAllOfType = 3,
  ActionMultiPanel_Type_DeselectAllOfType = 4
};
bool ActionMultiPanel_Type_IsValid(int value);
constexpr ActionMultiPanel_Type ActionMultiPanel_Type_Type_MIN = ActionMultiPanel_Type_SingleSelect;
constexpr ActionMultiPanel_Type ActionMultiPanel_Type_Type_MAX = ActionMultiPanel_Type_DeselectAllOfType;
constexpr int ActionMultiPanel_Type_Type_ARRAYSIZE = ActionMultiPanel_Type_Type_MAX + 1;

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

class ObservationUI :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ObservationUI) */ {
 public:
  ObservationUI();
  virtual ~ObservationUI();

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

  inline ObservationUI& operator=(const ObservationUI& from) {
    CopyFrom(from);
    return *this;
  }
  inline ObservationUI& operator=(ObservationUI&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ObservationUI& default_instance();

  enum PanelCase {
    kSingle = 2,
    kMulti = 3,
    kCargo = 4,
    kProduction = 5,
    PANEL_NOT_SET = 0,
  };

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ObservationUI* internal_default_instance() {
    return reinterpret_cast<const ObservationUI*>(
               &_ObservationUI_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(ObservationUI& a, ObservationUI& b) {
    a.Swap(&b);
  }
  inline void Swap(ObservationUI* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ObservationUI* New() const final {
    return CreateMaybeMessage<ObservationUI>(nullptr);
  }

  ObservationUI* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ObservationUI>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ObservationUI& from);
  void MergeFrom(const ObservationUI& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ObservationUI* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ObservationUI";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kGroupsFieldNumber = 1,
    kSingleFieldNumber = 2,
    kMultiFieldNumber = 3,
    kCargoFieldNumber = 4,
    kProductionFieldNumber = 5,
  };
  // repeated .SC2APIProtocol.ControlGroup groups = 1;
  int groups_size() const;
  private:
  int _internal_groups_size() const;
  public:
  void clear_groups();
  ::SC2APIProtocol::ControlGroup* mutable_groups(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ControlGroup >*
      mutable_groups();
  private:
  const ::SC2APIProtocol::ControlGroup& _internal_groups(int index) const;
  ::SC2APIProtocol::ControlGroup* _internal_add_groups();
  public:
  const ::SC2APIProtocol::ControlGroup& groups(int index) const;
  ::SC2APIProtocol::ControlGroup* add_groups();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ControlGroup >&
      groups() const;

  // optional .SC2APIProtocol.SinglePanel single = 2;
  bool has_single() const;
  private:
  bool _internal_has_single() const;
  public:
  void clear_single();
  const ::SC2APIProtocol::SinglePanel& single() const;
  ::SC2APIProtocol::SinglePanel* release_single();
  ::SC2APIProtocol::SinglePanel* mutable_single();
  void set_allocated_single(::SC2APIProtocol::SinglePanel* single);
  private:
  const ::SC2APIProtocol::SinglePanel& _internal_single() const;
  ::SC2APIProtocol::SinglePanel* _internal_mutable_single();
  public:

  // optional .SC2APIProtocol.MultiPanel multi = 3;
  bool has_multi() const;
  private:
  bool _internal_has_multi() const;
  public:
  void clear_multi();
  const ::SC2APIProtocol::MultiPanel& multi() const;
  ::SC2APIProtocol::MultiPanel* release_multi();
  ::SC2APIProtocol::MultiPanel* mutable_multi();
  void set_allocated_multi(::SC2APIProtocol::MultiPanel* multi);
  private:
  const ::SC2APIProtocol::MultiPanel& _internal_multi() const;
  ::SC2APIProtocol::MultiPanel* _internal_mutable_multi();
  public:

  // optional .SC2APIProtocol.CargoPanel cargo = 4;
  bool has_cargo() const;
  private:
  bool _internal_has_cargo() const;
  public:
  void clear_cargo();
  const ::SC2APIProtocol::CargoPanel& cargo() const;
  ::SC2APIProtocol::CargoPanel* release_cargo();
  ::SC2APIProtocol::CargoPanel* mutable_cargo();
  void set_allocated_cargo(::SC2APIProtocol::CargoPanel* cargo);
  private:
  const ::SC2APIProtocol::CargoPanel& _internal_cargo() const;
  ::SC2APIProtocol::CargoPanel* _internal_mutable_cargo();
  public:

  // optional .SC2APIProtocol.ProductionPanel production = 5;
  bool has_production() const;
  private:
  bool _internal_has_production() const;
  public:
  void clear_production();
  const ::SC2APIProtocol::ProductionPanel& production() const;
  ::SC2APIProtocol::ProductionPanel* release_production();
  ::SC2APIProtocol::ProductionPanel* mutable_production();
  void set_allocated_production(::SC2APIProtocol::ProductionPanel* production);
  private:
  const ::SC2APIProtocol::ProductionPanel& _internal_production() const;
  ::SC2APIProtocol::ProductionPanel* _internal_mutable_production();
  public:

  void clear_panel();
  PanelCase panel_case() const;
  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ObservationUI)
 private:
  class _Internal;
  void set_has_single();
  void set_has_multi();
  void set_has_cargo();
  void set_has_production();

  inline bool has_panel() const;
  inline void clear_has_panel();

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ControlGroup > groups_;
  union PanelUnion {
    PanelUnion() {}
    ::SC2APIProtocol::SinglePanel* single_;
    ::SC2APIProtocol::MultiPanel* multi_;
    ::SC2APIProtocol::CargoPanel* cargo_;
    ::SC2APIProtocol::ProductionPanel* production_;
  } panel_;
  ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1];

  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ControlGroup :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ControlGroup) */ {
 public:
  ControlGroup();
  virtual ~ControlGroup();

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

  inline ControlGroup& operator=(const ControlGroup& from) {
    CopyFrom(from);
    return *this;
  }
  inline ControlGroup& operator=(ControlGroup&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ControlGroup& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ControlGroup* internal_default_instance() {
    return reinterpret_cast<const ControlGroup*>(
               &_ControlGroup_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(ControlGroup& a, ControlGroup& b) {
    a.Swap(&b);
  }
  inline void Swap(ControlGroup* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ControlGroup* New() const final {
    return CreateMaybeMessage<ControlGroup>(nullptr);
  }

  ControlGroup* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ControlGroup>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ControlGroup& from);
  void MergeFrom(const ControlGroup& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ControlGroup* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ControlGroup";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kControlGroupIndexFieldNumber = 1,
    kLeaderUnitTypeFieldNumber = 2,
    kCountFieldNumber = 3,
  };
  // optional uint32 control_group_index = 1;
  bool has_control_group_index() const;
  private:
  bool _internal_has_control_group_index() const;
  public:
  void clear_control_group_index();
  ::PROTOBUF_NAMESPACE_ID::uint32 control_group_index() const;
  void set_control_group_index(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_control_group_index() const;
  void _internal_set_control_group_index(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // optional uint32 leader_unit_type = 2;
  bool has_leader_unit_type() const;
  private:
  bool _internal_has_leader_unit_type() const;
  public:
  void clear_leader_unit_type();
  ::PROTOBUF_NAMESPACE_ID::uint32 leader_unit_type() const;
  void set_leader_unit_type(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_leader_unit_type() const;
  void _internal_set_leader_unit_type(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // optional uint32 count = 3;
  bool has_count() const;
  private:
  bool _internal_has_count() const;
  public:
  void clear_count();
  ::PROTOBUF_NAMESPACE_ID::uint32 count() const;
  void set_count(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_count() const;
  void _internal_set_count(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ControlGroup)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 control_group_index_;
  ::PROTOBUF_NAMESPACE_ID::uint32 leader_unit_type_;
  ::PROTOBUF_NAMESPACE_ID::uint32 count_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class UnitInfo :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.UnitInfo) */ {
 public:
  UnitInfo();
  virtual ~UnitInfo();

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

  inline UnitInfo& operator=(const UnitInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline UnitInfo& operator=(UnitInfo&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const UnitInfo& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const UnitInfo* internal_default_instance() {
    return reinterpret_cast<const UnitInfo*>(
               &_UnitInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(UnitInfo& a, UnitInfo& b) {
    a.Swap(&b);
  }
  inline void Swap(UnitInfo* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline UnitInfo* New() const final {
    return CreateMaybeMessage<UnitInfo>(nullptr);
  }

  UnitInfo* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<UnitInfo>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const UnitInfo& from);
  void MergeFrom(const UnitInfo& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(UnitInfo* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.UnitInfo";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kAddOnFieldNumber = 8,
    kUnitTypeFieldNumber = 1,
    kPlayerRelativeFieldNumber = 2,
    kHealthFieldNumber = 3,
    kShieldsFieldNumber = 4,
    kEnergyFieldNumber = 5,
    kTransportSlotsTakenFieldNumber = 6,
    kBuildProgressFieldNumber = 7,
    kMaxHealthFieldNumber = 9,
    kMaxShieldsFieldNumber = 10,
    kMaxEnergyFieldNumber = 11,
  };
  // optional .SC2APIProtocol.UnitInfo add_on = 8;
  bool has_add_on() const;
  private:
  bool _internal_has_add_on() const;
  public:
  void clear_add_on();
  const ::SC2APIProtocol::UnitInfo& add_on() const;
  ::SC2APIProtocol::UnitInfo* release_add_on();
  ::SC2APIProtocol::UnitInfo* mutable_add_on();
  void set_allocated_add_on(::SC2APIProtocol::UnitInfo* add_on);
  private:
  const ::SC2APIProtocol::UnitInfo& _internal_add_on() const;
  ::SC2APIProtocol::UnitInfo* _internal_mutable_add_on();
  public:

  // optional uint32 unit_type = 1;
  bool has_unit_type() const;
  private:
  bool _internal_has_unit_type() const;
  public:
  void clear_unit_type();
  ::PROTOBUF_NAMESPACE_ID::uint32 unit_type() const;
  void set_unit_type(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_unit_type() const;
  void _internal_set_unit_type(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // optional uint32 player_relative = 2;
  bool has_player_relative() const;
  private:
  bool _internal_has_player_relative() const;
  public:
  void clear_player_relative();
  ::PROTOBUF_NAMESPACE_ID::uint32 player_relative() const;
  void set_player_relative(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_player_relative() const;
  void _internal_set_player_relative(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // optional int32 health = 3;
  bool has_health() const;
  private:
  bool _internal_has_health() const;
  public:
  void clear_health();
  ::PROTOBUF_NAMESPACE_ID::int32 health() const;
  void set_health(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_health() const;
  void _internal_set_health(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // optional int32 shields = 4;
  bool has_shields() const;
  private:
  bool _internal_has_shields() const;
  public:
  void clear_shields();
  ::PROTOBUF_NAMESPACE_ID::int32 shields() const;
  void set_shields(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_shields() const;
  void _internal_set_shields(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // optional int32 energy = 5;
  bool has_energy() const;
  private:
  bool _internal_has_energy() const;
  public:
  void clear_energy();
  ::PROTOBUF_NAMESPACE_ID::int32 energy() const;
  void set_energy(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_energy() const;
  void _internal_set_energy(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // optional int32 transport_slots_taken = 6;
  bool has_transport_slots_taken() const;
  private:
  bool _internal_has_transport_slots_taken() const;
  public:
  void clear_transport_slots_taken();
  ::PROTOBUF_NAMESPACE_ID::int32 transport_slots_taken() const;
  void set_transport_slots_taken(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_transport_slots_taken() const;
  void _internal_set_transport_slots_taken(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // optional float build_progress = 7;
  bool has_build_progress() const;
  private:
  bool _internal_has_build_progress() const;
  public:
  void clear_build_progress();
  float build_progress() const;
  void set_build_progress(float value);
  private:
  float _internal_build_progress() const;
  void _internal_set_build_progress(float value);
  public:

  // optional int32 max_health = 9;
  bool has_max_health() const;
  private:
  bool _internal_has_max_health() const;
  public:
  void clear_max_health();
  ::PROTOBUF_NAMESPACE_ID::int32 max_health() const;
  void set_max_health(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_max_health() const;
  void _internal_set_max_health(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // optional int32 max_shields = 10;
  bool has_max_shields() const;
  private:
  bool _internal_has_max_shields() const;
  public:
  void clear_max_shields();
  ::PROTOBUF_NAMESPACE_ID::int32 max_shields() const;
  void set_max_shields(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_max_shields() const;
  void _internal_set_max_shields(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // optional int32 max_energy = 11;
  bool has_max_energy() const;
  private:
  bool _internal_has_max_energy() const;
  public:
  void clear_max_energy();
  ::PROTOBUF_NAMESPACE_ID::int32 max_energy() const;
  void set_max_energy(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_max_energy() const;
  void _internal_set_max_energy(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.UnitInfo)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::SC2APIProtocol::UnitInfo* add_on_;
  ::PROTOBUF_NAMESPACE_ID::uint32 unit_type_;
  ::PROTOBUF_NAMESPACE_ID::uint32 player_relative_;
  ::PROTOBUF_NAMESPACE_ID::int32 health_;
  ::PROTOBUF_NAMESPACE_ID::int32 shields_;
  ::PROTOBUF_NAMESPACE_ID::int32 energy_;
  ::PROTOBUF_NAMESPACE_ID::int32 transport_slots_taken_;
  float build_progress_;
  ::PROTOBUF_NAMESPACE_ID::int32 max_health_;
  ::PROTOBUF_NAMESPACE_ID::int32 max_shields_;
  ::PROTOBUF_NAMESPACE_ID::int32 max_energy_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class SinglePanel :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.SinglePanel) */ {
 public:
  SinglePanel();
  virtual ~SinglePanel();

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

  inline SinglePanel& operator=(const SinglePanel& from) {
    CopyFrom(from);
    return *this;
  }
  inline SinglePanel& operator=(SinglePanel&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const SinglePanel& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const SinglePanel* internal_default_instance() {
    return reinterpret_cast<const SinglePanel*>(
               &_SinglePanel_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(SinglePanel& a, SinglePanel& b) {
    a.Swap(&b);
  }
  inline void Swap(SinglePanel* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline SinglePanel* New() const final {
    return CreateMaybeMessage<SinglePanel>(nullptr);
  }

  SinglePanel* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<SinglePanel>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const SinglePanel& from);
  void MergeFrom(const SinglePanel& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(SinglePanel* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.SinglePanel";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kBuffsFieldNumber = 5,
    kUnitFieldNumber = 1,
    kAttackUpgradeLevelFieldNumber = 2,
    kArmorUpgradeLevelFieldNumber = 3,
    kShieldUpgradeLevelFieldNumber = 4,
  };
  // repeated int32 buffs = 5;
  int buffs_size() const;
  private:
  int _internal_buffs_size() const;
  public:
  void clear_buffs();
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_buffs(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      _internal_buffs() const;
  void _internal_add_buffs(::PROTOBUF_NAMESPACE_ID::int32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      _internal_mutable_buffs();
  public:
  ::PROTOBUF_NAMESPACE_ID::int32 buffs(int index) const;
  void set_buffs(int index, ::PROTOBUF_NAMESPACE_ID::int32 value);
  void add_buffs(::PROTOBUF_NAMESPACE_ID::int32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      buffs() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      mutable_buffs();

  // optional .SC2APIProtocol.UnitInfo unit = 1;
  bool has_unit() const;
  private:
  bool _internal_has_unit() const;
  public:
  void clear_unit();
  const ::SC2APIProtocol::UnitInfo& unit() const;
  ::SC2APIProtocol::UnitInfo* release_unit();
  ::SC2APIProtocol::UnitInfo* mutable_unit();
  void set_allocated_unit(::SC2APIProtocol::UnitInfo* unit);
  private:
  const ::SC2APIProtocol::UnitInfo& _internal_unit() const;
  ::SC2APIProtocol::UnitInfo* _internal_mutable_unit();
  public:

  // optional int32 attack_upgrade_level = 2;
  bool has_attack_upgrade_level() const;
  private:
  bool _internal_has_attack_upgrade_level() const;
  public:
  void clear_attack_upgrade_level();
  ::PROTOBUF_NAMESPACE_ID::int32 attack_upgrade_level() const;
  void set_attack_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_attack_upgrade_level() const;
  void _internal_set_attack_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // optional int32 armor_upgrade_level = 3;
  bool has_armor_upgrade_level() const;
  private:
  bool _internal_has_armor_upgrade_level() const;
  public:
  void clear_armor_upgrade_level();
  ::PROTOBUF_NAMESPACE_ID::int32 armor_upgrade_level() const;
  void set_armor_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_armor_upgrade_level() const;
  void _internal_set_armor_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // optional int32 shield_upgrade_level = 4;
  bool has_shield_upgrade_level() const;
  private:
  bool _internal_has_shield_upgrade_level() const;
  public:
  void clear_shield_upgrade_level();
  ::PROTOBUF_NAMESPACE_ID::int32 shield_upgrade_level() const;
  void set_shield_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_shield_upgrade_level() const;
  void _internal_set_shield_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.SinglePanel)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 > buffs_;
  ::SC2APIProtocol::UnitInfo* unit_;
  ::PROTOBUF_NAMESPACE_ID::int32 attack_upgrade_level_;
  ::PROTOBUF_NAMESPACE_ID::int32 armor_upgrade_level_;
  ::PROTOBUF_NAMESPACE_ID::int32 shield_upgrade_level_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class MultiPanel :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.MultiPanel) */ {
 public:
  MultiPanel();
  virtual ~MultiPanel();

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

  inline MultiPanel& operator=(const MultiPanel& from) {
    CopyFrom(from);
    return *this;
  }
  inline MultiPanel& operator=(MultiPanel&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const MultiPanel& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const MultiPanel* internal_default_instance() {
    return reinterpret_cast<const MultiPanel*>(
               &_MultiPanel_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(MultiPanel& a, MultiPanel& b) {
    a.Swap(&b);
  }
  inline void Swap(MultiPanel* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline MultiPanel* New() const final {
    return CreateMaybeMessage<MultiPanel>(nullptr);
  }

  MultiPanel* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<MultiPanel>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const MultiPanel& from);
  void MergeFrom(const MultiPanel& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(MultiPanel* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.MultiPanel";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kUnitsFieldNumber = 1,
  };
  // repeated .SC2APIProtocol.UnitInfo units = 1;
  int units_size() const;
  private:
  int _internal_units_size() const;
  public:
  void clear_units();
  ::SC2APIProtocol::UnitInfo* mutable_units(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >*
      mutable_units();
  private:
  const ::SC2APIProtocol::UnitInfo& _internal_units(int index) const;
  ::SC2APIProtocol::UnitInfo* _internal_add_units();
  public:
  const ::SC2APIProtocol::UnitInfo& units(int index) const;
  ::SC2APIProtocol::UnitInfo* add_units();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >&
      units() const;

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.MultiPanel)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo > units_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class CargoPanel :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.CargoPanel) */ {
 public:
  CargoPanel();
  virtual ~CargoPanel();

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

  inline CargoPanel& operator=(const CargoPanel& from) {
    CopyFrom(from);
    return *this;
  }
  inline CargoPanel& operator=(CargoPanel&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const CargoPanel& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const CargoPanel* internal_default_instance() {
    return reinterpret_cast<const CargoPanel*>(
               &_CargoPanel_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(CargoPanel& a, CargoPanel& b) {
    a.Swap(&b);
  }
  inline void Swap(CargoPanel* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline CargoPanel* New() const final {
    return CreateMaybeMessage<CargoPanel>(nullptr);
  }

  CargoPanel* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<CargoPanel>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const CargoPanel& from);
  void MergeFrom(const CargoPanel& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CargoPanel* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.CargoPanel";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kPassengersFieldNumber = 2,
    kUnitFieldNumber = 1,
    kSlotsAvailableFieldNumber = 3,
  };
  // repeated .SC2APIProtocol.UnitInfo passengers = 2;
  int passengers_size() const;
  private:
  int _internal_passengers_size() const;
  public:
  void clear_passengers();
  ::SC2APIProtocol::UnitInfo* mutable_passengers(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >*
      mutable_passengers();
  private:
  const ::SC2APIProtocol::UnitInfo& _internal_passengers(int index) const;
  ::SC2APIProtocol::UnitInfo* _internal_add_passengers();
  public:
  const ::SC2APIProtocol::UnitInfo& passengers(int index) const;
  ::SC2APIProtocol::UnitInfo* add_passengers();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >&
      passengers() const;

  // optional .SC2APIProtocol.UnitInfo unit = 1;
  bool has_unit() const;
  private:
  bool _internal_has_unit() const;
  public:
  void clear_unit();
  const ::SC2APIProtocol::UnitInfo& unit() const;
  ::SC2APIProtocol::UnitInfo* release_unit();
  ::SC2APIProtocol::UnitInfo* mutable_unit();
  void set_allocated_unit(::SC2APIProtocol::UnitInfo* unit);
  private:
  const ::SC2APIProtocol::UnitInfo& _internal_unit() const;
  ::SC2APIProtocol::UnitInfo* _internal_mutable_unit();
  public:

  // optional int32 slots_available = 3;
  bool has_slots_available() const;
  private:
  bool _internal_has_slots_available() const;
  public:
  void clear_slots_available();
  ::PROTOBUF_NAMESPACE_ID::int32 slots_available() const;
  void set_slots_available(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_slots_available() const;
  void _internal_set_slots_available(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.CargoPanel)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo > passengers_;
  ::SC2APIProtocol::UnitInfo* unit_;
  ::PROTOBUF_NAMESPACE_ID::int32 slots_available_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class BuildItem :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.BuildItem) */ {
 public:
  BuildItem();
  virtual ~BuildItem();

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

  inline BuildItem& operator=(const BuildItem& from) {
    CopyFrom(from);
    return *this;
  }
  inline BuildItem& operator=(BuildItem&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const BuildItem& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const BuildItem* internal_default_instance() {
    return reinterpret_cast<const BuildItem*>(
               &_BuildItem_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(BuildItem& a, BuildItem& b) {
    a.Swap(&b);
  }
  inline void Swap(BuildItem* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline BuildItem* New() const final {
    return CreateMaybeMessage<BuildItem>(nullptr);
  }

  BuildItem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<BuildItem>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const BuildItem& from);
  void MergeFrom(const BuildItem& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(BuildItem* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.BuildItem";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kAbilityIdFieldNumber = 1,
    kBuildProgressFieldNumber = 2,
  };
  // optional uint32 ability_id = 1;
  bool has_ability_id() const;
  private:
  bool _internal_has_ability_id() const;
  public:
  void clear_ability_id();
  ::PROTOBUF_NAMESPACE_ID::uint32 ability_id() const;
  void set_ability_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_ability_id() const;
  void _internal_set_ability_id(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // optional float build_progress = 2;
  bool has_build_progress() const;
  private:
  bool _internal_has_build_progress() const;
  public:
  void clear_build_progress();
  float build_progress() const;
  void set_build_progress(float value);
  private:
  float _internal_build_progress() const;
  void _internal_set_build_progress(float value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.BuildItem)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 ability_id_;
  float build_progress_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ProductionPanel :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ProductionPanel) */ {
 public:
  ProductionPanel();
  virtual ~ProductionPanel();

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

  inline ProductionPanel& operator=(const ProductionPanel& from) {
    CopyFrom(from);
    return *this;
  }
  inline ProductionPanel& operator=(ProductionPanel&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ProductionPanel& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ProductionPanel* internal_default_instance() {
    return reinterpret_cast<const ProductionPanel*>(
               &_ProductionPanel_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(ProductionPanel& a, ProductionPanel& b) {
    a.Swap(&b);
  }
  inline void Swap(ProductionPanel* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ProductionPanel* New() const final {
    return CreateMaybeMessage<ProductionPanel>(nullptr);
  }

  ProductionPanel* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ProductionPanel>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ProductionPanel& from);
  void MergeFrom(const ProductionPanel& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ProductionPanel* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ProductionPanel";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kBuildQueueFieldNumber = 2,
    kProductionQueueFieldNumber = 3,
    kUnitFieldNumber = 1,
  };
  // repeated .SC2APIProtocol.UnitInfo build_queue = 2;
  int build_queue_size() const;
  private:
  int _internal_build_queue_size() const;
  public:
  void clear_build_queue();
  ::SC2APIProtocol::UnitInfo* mutable_build_queue(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >*
      mutable_build_queue();
  private:
  const ::SC2APIProtocol::UnitInfo& _internal_build_queue(int index) const;
  ::SC2APIProtocol::UnitInfo* _internal_add_build_queue();
  public:
  const ::SC2APIProtocol::UnitInfo& build_queue(int index) const;
  ::SC2APIProtocol::UnitInfo* add_build_queue();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >&
      build_queue() const;

  // repeated .SC2APIProtocol.BuildItem production_queue = 3;
  int production_queue_size() const;
  private:
  int _internal_production_queue_size() const;
  public:
  void clear_production_queue();
  ::SC2APIProtocol::BuildItem* mutable_production_queue(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::BuildItem >*
      mutable_production_queue();
  private:
  const ::SC2APIProtocol::BuildItem& _internal_production_queue(int index) const;
  ::SC2APIProtocol::BuildItem* _internal_add_production_queue();
  public:
  const ::SC2APIProtocol::BuildItem& production_queue(int index) const;
  ::SC2APIProtocol::BuildItem* add_production_queue();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::BuildItem >&
      production_queue() const;

  // optional .SC2APIProtocol.UnitInfo unit = 1;
  bool has_unit() const;
  private:
  bool _internal_has_unit() const;
  public:
  void clear_unit();
  const ::SC2APIProtocol::UnitInfo& unit() const;
  ::SC2APIProtocol::UnitInfo* release_unit();
  ::SC2APIProtocol::UnitInfo* mutable_unit();
  void set_allocated_unit(::SC2APIProtocol::UnitInfo* unit);
  private:
  const ::SC2APIProtocol::UnitInfo& _internal_unit() const;
  ::SC2APIProtocol::UnitInfo* _internal_mutable_unit();
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ProductionPanel)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo > build_queue_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::BuildItem > production_queue_;
  ::SC2APIProtocol::UnitInfo* unit_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionUI :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionUI) */ {
 public:
  ActionUI();
  virtual ~ActionUI();

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

  inline ActionUI& operator=(const ActionUI& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionUI& operator=(ActionUI&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionUI& default_instance();

  enum ActionCase {
    kControlGroup = 1,
    kSelectArmy = 2,
    kSelectWarpGates = 3,
    kSelectLarva = 4,
    kSelectIdleWorker = 5,
    kMultiPanel = 6,
    kCargoPanel = 7,
    kProductionPanel = 8,
    kToggleAutocast = 9,
    ACTION_NOT_SET = 0,
  };

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionUI* internal_default_instance() {
    return reinterpret_cast<const ActionUI*>(
               &_ActionUI_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    8;

  friend void swap(ActionUI& a, ActionUI& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionUI* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionUI* New() const final {
    return CreateMaybeMessage<ActionUI>(nullptr);
  }

  ActionUI* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionUI>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionUI& from);
  void MergeFrom(const ActionUI& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionUI* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionUI";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kControlGroupFieldNumber = 1,
    kSelectArmyFieldNumber = 2,
    kSelectWarpGatesFieldNumber = 3,
    kSelectLarvaFieldNumber = 4,
    kSelectIdleWorkerFieldNumber = 5,
    kMultiPanelFieldNumber = 6,
    kCargoPanelFieldNumber = 7,
    kProductionPanelFieldNumber = 8,
    kToggleAutocastFieldNumber = 9,
  };
  // optional .SC2APIProtocol.ActionControlGroup control_group = 1;
  bool has_control_group() const;
  private:
  bool _internal_has_control_group() const;
  public:
  void clear_control_group();
  const ::SC2APIProtocol::ActionControlGroup& control_group() const;
  ::SC2APIProtocol::ActionControlGroup* release_control_group();
  ::SC2APIProtocol::ActionControlGroup* mutable_control_group();
  void set_allocated_control_group(::SC2APIProtocol::ActionControlGroup* control_group);
  private:
  const ::SC2APIProtocol::ActionControlGroup& _internal_control_group() const;
  ::SC2APIProtocol::ActionControlGroup* _internal_mutable_control_group();
  public:

  // optional .SC2APIProtocol.ActionSelectArmy select_army = 2;
  bool has_select_army() const;
  private:
  bool _internal_has_select_army() const;
  public:
  void clear_select_army();
  const ::SC2APIProtocol::ActionSelectArmy& select_army() const;
  ::SC2APIProtocol::ActionSelectArmy* release_select_army();
  ::SC2APIProtocol::ActionSelectArmy* mutable_select_army();
  void set_allocated_select_army(::SC2APIProtocol::ActionSelectArmy* select_army);
  private:
  const ::SC2APIProtocol::ActionSelectArmy& _internal_select_army() const;
  ::SC2APIProtocol::ActionSelectArmy* _internal_mutable_select_army();
  public:

  // optional .SC2APIProtocol.ActionSelectWarpGates select_warp_gates = 3;
  bool has_select_warp_gates() const;
  private:
  bool _internal_has_select_warp_gates() const;
  public:
  void clear_select_warp_gates();
  const ::SC2APIProtocol::ActionSelectWarpGates& select_warp_gates() const;
  ::SC2APIProtocol::ActionSelectWarpGates* release_select_warp_gates();
  ::SC2APIProtocol::ActionSelectWarpGates* mutable_select_warp_gates();
  void set_allocated_select_warp_gates(::SC2APIProtocol::ActionSelectWarpGates* select_warp_gates);
  private:
  const ::SC2APIProtocol::ActionSelectWarpGates& _internal_select_warp_gates() const;
  ::SC2APIProtocol::ActionSelectWarpGates* _internal_mutable_select_warp_gates();
  public:

  // optional .SC2APIProtocol.ActionSelectLarva select_larva = 4;
  bool has_select_larva() const;
  private:
  bool _internal_has_select_larva() const;
  public:
  void clear_select_larva();
  const ::SC2APIProtocol::ActionSelectLarva& select_larva() const;
  ::SC2APIProtocol::ActionSelectLarva* release_select_larva();
  ::SC2APIProtocol::ActionSelectLarva* mutable_select_larva();
  void set_allocated_select_larva(::SC2APIProtocol::ActionSelectLarva* select_larva);
  private:
  const ::SC2APIProtocol::ActionSelectLarva& _internal_select_larva() const;
  ::SC2APIProtocol::ActionSelectLarva* _internal_mutable_select_larva();
  public:

  // optional .SC2APIProtocol.ActionSelectIdleWorker select_idle_worker = 5;
  bool has_select_idle_worker() const;
  private:
  bool _internal_has_select_idle_worker() const;
  public:
  void clear_select_idle_worker();
  const ::SC2APIProtocol::ActionSelectIdleWorker& select_idle_worker() const;
  ::SC2APIProtocol::ActionSelectIdleWorker* release_select_idle_worker();
  ::SC2APIProtocol::ActionSelectIdleWorker* mutable_select_idle_worker();
  void set_allocated_select_idle_worker(::SC2APIProtocol::ActionSelectIdleWorker* select_idle_worker);
  private:
  const ::SC2APIProtocol::ActionSelectIdleWorker& _internal_select_idle_worker() const;
  ::SC2APIProtocol::ActionSelectIdleWorker* _internal_mutable_select_idle_worker();
  public:

  // optional .SC2APIProtocol.ActionMultiPanel multi_panel = 6;
  bool has_multi_panel() const;
  private:
  bool _internal_has_multi_panel() const;
  public:
  void clear_multi_panel();
  const ::SC2APIProtocol::ActionMultiPanel& multi_panel() const;
  ::SC2APIProtocol::ActionMultiPanel* release_multi_panel();
  ::SC2APIProtocol::ActionMultiPanel* mutable_multi_panel();
  void set_allocated_multi_panel(::SC2APIProtocol::ActionMultiPanel* multi_panel);
  private:
  const ::SC2APIProtocol::ActionMultiPanel& _internal_multi_panel() const;
  ::SC2APIProtocol::ActionMultiPanel* _internal_mutable_multi_panel();
  public:

  // optional .SC2APIProtocol.ActionCargoPanelUnload cargo_panel = 7;
  bool has_cargo_panel() const;
  private:
  bool _internal_has_cargo_panel() const;
  public:
  void clear_cargo_panel();
  const ::SC2APIProtocol::ActionCargoPanelUnload& cargo_panel() const;
  ::SC2APIProtocol::ActionCargoPanelUnload* release_cargo_panel();
  ::SC2APIProtocol::ActionCargoPanelUnload* mutable_cargo_panel();
  void set_allocated_cargo_panel(::SC2APIProtocol::ActionCargoPanelUnload* cargo_panel);
  private:
  const ::SC2APIProtocol::ActionCargoPanelUnload& _internal_cargo_panel() const;
  ::SC2APIProtocol::ActionCargoPanelUnload* _internal_mutable_cargo_panel();
  public:

  // optional .SC2APIProtocol.ActionProductionPanelRemoveFromQueue production_panel = 8;
  bool has_production_panel() const;
  private:
  bool _internal_has_production_panel() const;
  public:
  void clear_production_panel();
  const ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue& production_panel() const;
  ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* release_production_panel();
  ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* mutable_production_panel();
  void set_allocated_production_panel(::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* production_panel);
  private:
  const ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue& _internal_production_panel() const;
  ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* _internal_mutable_production_panel();
  public:

  // optional .SC2APIProtocol.ActionToggleAutocast toggle_autocast = 9;
  bool has_toggle_autocast() const;
  private:
  bool _internal_has_toggle_autocast() const;
  public:
  void clear_toggle_autocast();
  const ::SC2APIProtocol::ActionToggleAutocast& toggle_autocast() const;
  ::SC2APIProtocol::ActionToggleAutocast* release_toggle_autocast();
  ::SC2APIProtocol::ActionToggleAutocast* mutable_toggle_autocast();
  void set_allocated_toggle_autocast(::SC2APIProtocol::ActionToggleAutocast* toggle_autocast);
  private:
  const ::SC2APIProtocol::ActionToggleAutocast& _internal_toggle_autocast() const;
  ::SC2APIProtocol::ActionToggleAutocast* _internal_mutable_toggle_autocast();
  public:

  void clear_action();
  ActionCase action_case() const;
  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionUI)
 private:
  class _Internal;
  void set_has_control_group();
  void set_has_select_army();
  void set_has_select_warp_gates();
  void set_has_select_larva();
  void set_has_select_idle_worker();
  void set_has_multi_panel();
  void set_has_cargo_panel();
  void set_has_production_panel();
  void set_has_toggle_autocast();

  inline bool has_action() const;
  inline void clear_has_action();

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  union ActionUnion {
    ActionUnion() {}
    ::SC2APIProtocol::ActionControlGroup* control_group_;
    ::SC2APIProtocol::ActionSelectArmy* select_army_;
    ::SC2APIProtocol::ActionSelectWarpGates* select_warp_gates_;
    ::SC2APIProtocol::ActionSelectLarva* select_larva_;
    ::SC2APIProtocol::ActionSelectIdleWorker* select_idle_worker_;
    ::SC2APIProtocol::ActionMultiPanel* multi_panel_;
    ::SC2APIProtocol::ActionCargoPanelUnload* cargo_panel_;
    ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* production_panel_;
    ::SC2APIProtocol::ActionToggleAutocast* toggle_autocast_;
  } action_;
  ::PROTOBUF_NAMESPACE_ID::uint32 _oneof_case_[1];

  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionControlGroup :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionControlGroup) */ {
 public:
  ActionControlGroup();
  virtual ~ActionControlGroup();

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

  inline ActionControlGroup& operator=(const ActionControlGroup& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionControlGroup& operator=(ActionControlGroup&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionControlGroup& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionControlGroup* internal_default_instance() {
    return reinterpret_cast<const ActionControlGroup*>(
               &_ActionControlGroup_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    9;

  friend void swap(ActionControlGroup& a, ActionControlGroup& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionControlGroup* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionControlGroup* New() const final {
    return CreateMaybeMessage<ActionControlGroup>(nullptr);
  }

  ActionControlGroup* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionControlGroup>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionControlGroup& from);
  void MergeFrom(const ActionControlGroup& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionControlGroup* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionControlGroup";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

  typedef ActionControlGroup_ControlGroupAction ControlGroupAction;
  static constexpr ControlGroupAction Recall =
    ActionControlGroup_ControlGroupAction_Recall;
  static constexpr ControlGroupAction Set =
    ActionControlGroup_ControlGroupAction_Set;
  static constexpr ControlGroupAction Append =
    ActionControlGroup_ControlGroupAction_Append;
  static constexpr ControlGroupAction SetAndSteal =
    ActionControlGroup_ControlGroupAction_SetAndSteal;
  static constexpr ControlGroupAction AppendAndSteal =
    ActionControlGroup_ControlGroupAction_AppendAndSteal;
  static inline bool ControlGroupAction_IsValid(int value) {
    return ActionControlGroup_ControlGroupAction_IsValid(value);
  }
  static constexpr ControlGroupAction ControlGroupAction_MIN =
    ActionControlGroup_ControlGroupAction_ControlGroupAction_MIN;
  static constexpr ControlGroupAction ControlGroupAction_MAX =
    ActionControlGroup_ControlGroupAction_ControlGroupAction_MAX;
  static constexpr int ControlGroupAction_ARRAYSIZE =
    ActionControlGroup_ControlGroupAction_ControlGroupAction_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  ControlGroupAction_descriptor() {
    return ActionControlGroup_ControlGroupAction_descriptor();
  }
  template<typename T>
  static inline const std::string& ControlGroupAction_Name(T enum_t_value) {
    static_assert(::std::is_same<T, ControlGroupAction>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function ControlGroupAction_Name.");
    return ActionControlGroup_ControlGroupAction_Name(enum_t_value);
  }
  static inline bool ControlGroupAction_Parse(const std::string& name,
      ControlGroupAction* value) {
    return ActionControlGroup_ControlGroupAction_Parse(name, value);
  }

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

  enum : int {
    kControlGroupIndexFieldNumber = 2,
    kActionFieldNumber = 1,
  };
  // optional uint32 control_group_index = 2;
  bool has_control_group_index() const;
  private:
  bool _internal_has_control_group_index() const;
  public:
  void clear_control_group_index();
  ::PROTOBUF_NAMESPACE_ID::uint32 control_group_index() const;
  void set_control_group_index(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_control_group_index() const;
  void _internal_set_control_group_index(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // optional .SC2APIProtocol.ActionControlGroup.ControlGroupAction action = 1;
  bool has_action() const;
  private:
  bool _internal_has_action() const;
  public:
  void clear_action();
  ::SC2APIProtocol::ActionControlGroup_ControlGroupAction action() const;
  void set_action(::SC2APIProtocol::ActionControlGroup_ControlGroupAction value);
  private:
  ::SC2APIProtocol::ActionControlGroup_ControlGroupAction _internal_action() const;
  void _internal_set_action(::SC2APIProtocol::ActionControlGroup_ControlGroupAction value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionControlGroup)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::uint32 control_group_index_;
  int action_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionSelectArmy :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionSelectArmy) */ {
 public:
  ActionSelectArmy();
  virtual ~ActionSelectArmy();

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

  inline ActionSelectArmy& operator=(const ActionSelectArmy& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionSelectArmy& operator=(ActionSelectArmy&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionSelectArmy& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionSelectArmy* internal_default_instance() {
    return reinterpret_cast<const ActionSelectArmy*>(
               &_ActionSelectArmy_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    10;

  friend void swap(ActionSelectArmy& a, ActionSelectArmy& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionSelectArmy* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionSelectArmy* New() const final {
    return CreateMaybeMessage<ActionSelectArmy>(nullptr);
  }

  ActionSelectArmy* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionSelectArmy>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionSelectArmy& from);
  void MergeFrom(const ActionSelectArmy& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionSelectArmy* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionSelectArmy";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kSelectionAddFieldNumber = 1,
  };
  // optional bool selection_add = 1;
  bool has_selection_add() const;
  private:
  bool _internal_has_selection_add() const;
  public:
  void clear_selection_add();
  bool selection_add() const;
  void set_selection_add(bool value);
  private:
  bool _internal_selection_add() const;
  void _internal_set_selection_add(bool value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionSelectArmy)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  bool selection_add_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionSelectWarpGates :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionSelectWarpGates) */ {
 public:
  ActionSelectWarpGates();
  virtual ~ActionSelectWarpGates();

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

  inline ActionSelectWarpGates& operator=(const ActionSelectWarpGates& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionSelectWarpGates& operator=(ActionSelectWarpGates&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionSelectWarpGates& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionSelectWarpGates* internal_default_instance() {
    return reinterpret_cast<const ActionSelectWarpGates*>(
               &_ActionSelectWarpGates_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    11;

  friend void swap(ActionSelectWarpGates& a, ActionSelectWarpGates& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionSelectWarpGates* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionSelectWarpGates* New() const final {
    return CreateMaybeMessage<ActionSelectWarpGates>(nullptr);
  }

  ActionSelectWarpGates* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionSelectWarpGates>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionSelectWarpGates& from);
  void MergeFrom(const ActionSelectWarpGates& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionSelectWarpGates* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionSelectWarpGates";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kSelectionAddFieldNumber = 1,
  };
  // optional bool selection_add = 1;
  bool has_selection_add() const;
  private:
  bool _internal_has_selection_add() const;
  public:
  void clear_selection_add();
  bool selection_add() const;
  void set_selection_add(bool value);
  private:
  bool _internal_selection_add() const;
  void _internal_set_selection_add(bool value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionSelectWarpGates)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  bool selection_add_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionSelectLarva :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionSelectLarva) */ {
 public:
  ActionSelectLarva();
  virtual ~ActionSelectLarva();

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

  inline ActionSelectLarva& operator=(const ActionSelectLarva& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionSelectLarva& operator=(ActionSelectLarva&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionSelectLarva& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionSelectLarva* internal_default_instance() {
    return reinterpret_cast<const ActionSelectLarva*>(
               &_ActionSelectLarva_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    12;

  friend void swap(ActionSelectLarva& a, ActionSelectLarva& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionSelectLarva* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionSelectLarva* New() const final {
    return CreateMaybeMessage<ActionSelectLarva>(nullptr);
  }

  ActionSelectLarva* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionSelectLarva>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionSelectLarva& from);
  void MergeFrom(const ActionSelectLarva& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionSelectLarva* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionSelectLarva";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionSelectLarva)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionSelectIdleWorker :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionSelectIdleWorker) */ {
 public:
  ActionSelectIdleWorker();
  virtual ~ActionSelectIdleWorker();

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

  inline ActionSelectIdleWorker& operator=(const ActionSelectIdleWorker& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionSelectIdleWorker& operator=(ActionSelectIdleWorker&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionSelectIdleWorker& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionSelectIdleWorker* internal_default_instance() {
    return reinterpret_cast<const ActionSelectIdleWorker*>(
               &_ActionSelectIdleWorker_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    13;

  friend void swap(ActionSelectIdleWorker& a, ActionSelectIdleWorker& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionSelectIdleWorker* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionSelectIdleWorker* New() const final {
    return CreateMaybeMessage<ActionSelectIdleWorker>(nullptr);
  }

  ActionSelectIdleWorker* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionSelectIdleWorker>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionSelectIdleWorker& from);
  void MergeFrom(const ActionSelectIdleWorker& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionSelectIdleWorker* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionSelectIdleWorker";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

  typedef ActionSelectIdleWorker_Type Type;
  static constexpr Type Set =
    ActionSelectIdleWorker_Type_Set;
  static constexpr Type Add =
    ActionSelectIdleWorker_Type_Add;
  static constexpr Type All =
    ActionSelectIdleWorker_Type_All;
  static constexpr Type AddAll =
    ActionSelectIdleWorker_Type_AddAll;
  static inline bool Type_IsValid(int value) {
    return ActionSelectIdleWorker_Type_IsValid(value);
  }
  static constexpr Type Type_MIN =
    ActionSelectIdleWorker_Type_Type_MIN;
  static constexpr Type Type_MAX =
    ActionSelectIdleWorker_Type_Type_MAX;
  static constexpr int Type_ARRAYSIZE =
    ActionSelectIdleWorker_Type_Type_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Type_descriptor() {
    return ActionSelectIdleWorker_Type_descriptor();
  }
  template<typename T>
  static inline const std::string& Type_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Type>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Type_Name.");
    return ActionSelectIdleWorker_Type_Name(enum_t_value);
  }
  static inline bool Type_Parse(const std::string& name,
      Type* value) {
    return ActionSelectIdleWorker_Type_Parse(name, value);
  }

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

  enum : int {
    kTypeFieldNumber = 1,
  };
  // optional .SC2APIProtocol.ActionSelectIdleWorker.Type type = 1;
  bool has_type() const;
  private:
  bool _internal_has_type() const;
  public:
  void clear_type();
  ::SC2APIProtocol::ActionSelectIdleWorker_Type type() const;
  void set_type(::SC2APIProtocol::ActionSelectIdleWorker_Type value);
  private:
  ::SC2APIProtocol::ActionSelectIdleWorker_Type _internal_type() const;
  void _internal_set_type(::SC2APIProtocol::ActionSelectIdleWorker_Type value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionSelectIdleWorker)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  int type_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionMultiPanel :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionMultiPanel) */ {
 public:
  ActionMultiPanel();
  virtual ~ActionMultiPanel();

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

  inline ActionMultiPanel& operator=(const ActionMultiPanel& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionMultiPanel& operator=(ActionMultiPanel&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionMultiPanel& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionMultiPanel* internal_default_instance() {
    return reinterpret_cast<const ActionMultiPanel*>(
               &_ActionMultiPanel_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    14;

  friend void swap(ActionMultiPanel& a, ActionMultiPanel& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionMultiPanel* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionMultiPanel* New() const final {
    return CreateMaybeMessage<ActionMultiPanel>(nullptr);
  }

  ActionMultiPanel* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionMultiPanel>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionMultiPanel& from);
  void MergeFrom(const ActionMultiPanel& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionMultiPanel* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionMultiPanel";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

  typedef ActionMultiPanel_Type Type;
  static constexpr Type SingleSelect =
    ActionMultiPanel_Type_SingleSelect;
  static constexpr Type DeselectUnit =
    ActionMultiPanel_Type_DeselectUnit;
  static constexpr Type SelectAllOfType =
    ActionMultiPanel_Type_SelectAllOfType;
  static constexpr Type DeselectAllOfType =
    ActionMultiPanel_Type_DeselectAllOfType;
  static inline bool Type_IsValid(int value) {
    return ActionMultiPanel_Type_IsValid(value);
  }
  static constexpr Type Type_MIN =
    ActionMultiPanel_Type_Type_MIN;
  static constexpr Type Type_MAX =
    ActionMultiPanel_Type_Type_MAX;
  static constexpr int Type_ARRAYSIZE =
    ActionMultiPanel_Type_Type_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Type_descriptor() {
    return ActionMultiPanel_Type_descriptor();
  }
  template<typename T>
  static inline const std::string& Type_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Type>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Type_Name.");
    return ActionMultiPanel_Type_Name(enum_t_value);
  }
  static inline bool Type_Parse(const std::string& name,
      Type* value) {
    return ActionMultiPanel_Type_Parse(name, value);
  }

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

  enum : int {
    kUnitIndexFieldNumber = 2,
    kTypeFieldNumber = 1,
  };
  // optional int32 unit_index = 2;
  bool has_unit_index() const;
  private:
  bool _internal_has_unit_index() const;
  public:
  void clear_unit_index();
  ::PROTOBUF_NAMESPACE_ID::int32 unit_index() const;
  void set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_unit_index() const;
  void _internal_set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // optional .SC2APIProtocol.ActionMultiPanel.Type type = 1;
  bool has_type() const;
  private:
  bool _internal_has_type() const;
  public:
  void clear_type();
  ::SC2APIProtocol::ActionMultiPanel_Type type() const;
  void set_type(::SC2APIProtocol::ActionMultiPanel_Type value);
  private:
  ::SC2APIProtocol::ActionMultiPanel_Type _internal_type() const;
  void _internal_set_type(::SC2APIProtocol::ActionMultiPanel_Type value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionMultiPanel)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::int32 unit_index_;
  int type_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionCargoPanelUnload :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionCargoPanelUnload) */ {
 public:
  ActionCargoPanelUnload();
  virtual ~ActionCargoPanelUnload();

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

  inline ActionCargoPanelUnload& operator=(const ActionCargoPanelUnload& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionCargoPanelUnload& operator=(ActionCargoPanelUnload&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionCargoPanelUnload& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionCargoPanelUnload* internal_default_instance() {
    return reinterpret_cast<const ActionCargoPanelUnload*>(
               &_ActionCargoPanelUnload_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    15;

  friend void swap(ActionCargoPanelUnload& a, ActionCargoPanelUnload& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionCargoPanelUnload* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionCargoPanelUnload* New() const final {
    return CreateMaybeMessage<ActionCargoPanelUnload>(nullptr);
  }

  ActionCargoPanelUnload* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionCargoPanelUnload>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionCargoPanelUnload& from);
  void MergeFrom(const ActionCargoPanelUnload& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionCargoPanelUnload* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionCargoPanelUnload";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kUnitIndexFieldNumber = 1,
  };
  // optional int32 unit_index = 1;
  bool has_unit_index() const;
  private:
  bool _internal_has_unit_index() const;
  public:
  void clear_unit_index();
  ::PROTOBUF_NAMESPACE_ID::int32 unit_index() const;
  void set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_unit_index() const;
  void _internal_set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionCargoPanelUnload)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::int32 unit_index_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionProductionPanelRemoveFromQueue :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionProductionPanelRemoveFromQueue) */ {
 public:
  ActionProductionPanelRemoveFromQueue();
  virtual ~ActionProductionPanelRemoveFromQueue();

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

  inline ActionProductionPanelRemoveFromQueue& operator=(const ActionProductionPanelRemoveFromQueue& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionProductionPanelRemoveFromQueue& operator=(ActionProductionPanelRemoveFromQueue&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionProductionPanelRemoveFromQueue& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionProductionPanelRemoveFromQueue* internal_default_instance() {
    return reinterpret_cast<const ActionProductionPanelRemoveFromQueue*>(
               &_ActionProductionPanelRemoveFromQueue_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    16;

  friend void swap(ActionProductionPanelRemoveFromQueue& a, ActionProductionPanelRemoveFromQueue& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionProductionPanelRemoveFromQueue* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionProductionPanelRemoveFromQueue* New() const final {
    return CreateMaybeMessage<ActionProductionPanelRemoveFromQueue>(nullptr);
  }

  ActionProductionPanelRemoveFromQueue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionProductionPanelRemoveFromQueue>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionProductionPanelRemoveFromQueue& from);
  void MergeFrom(const ActionProductionPanelRemoveFromQueue& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionProductionPanelRemoveFromQueue* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionProductionPanelRemoveFromQueue";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kUnitIndexFieldNumber = 1,
  };
  // optional int32 unit_index = 1;
  bool has_unit_index() const;
  private:
  bool _internal_has_unit_index() const;
  public:
  void clear_unit_index();
  ::PROTOBUF_NAMESPACE_ID::int32 unit_index() const;
  void set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_unit_index() const;
  void _internal_set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::int32 unit_index_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// -------------------------------------------------------------------

class ActionToggleAutocast :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:SC2APIProtocol.ActionToggleAutocast) */ {
 public:
  ActionToggleAutocast();
  virtual ~ActionToggleAutocast();

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

  inline ActionToggleAutocast& operator=(const ActionToggleAutocast& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionToggleAutocast& operator=(ActionToggleAutocast&& from) noexcept {
    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields();
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const ActionToggleAutocast& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const ActionToggleAutocast* internal_default_instance() {
    return reinterpret_cast<const ActionToggleAutocast*>(
               &_ActionToggleAutocast_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    17;

  friend void swap(ActionToggleAutocast& a, ActionToggleAutocast& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionToggleAutocast* other) {
    if (other == this) return;
    InternalSwap(other);
  }

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

  inline ActionToggleAutocast* New() const final {
    return CreateMaybeMessage<ActionToggleAutocast>(nullptr);
  }

  ActionToggleAutocast* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<ActionToggleAutocast>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const ActionToggleAutocast& from);
  void MergeFrom(const ActionToggleAutocast& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

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

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionToggleAutocast* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "SC2APIProtocol.ActionToggleAutocast";
  }
  private:
  inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
    return nullptr;
  }
  inline void* MaybeArenaPtr() const {
    return nullptr;
  }
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_s2clientprotocol_2fui_2eproto);
    return ::descriptor_table_s2clientprotocol_2fui_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kAbilityIdFieldNumber = 1,
  };
  // optional int32 ability_id = 1;
  bool has_ability_id() const;
  private:
  bool _internal_has_ability_id() const;
  public:
  void clear_ability_id();
  ::PROTOBUF_NAMESPACE_ID::int32 ability_id() const;
  void set_ability_id(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_ability_id() const;
  void _internal_set_ability_id(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:SC2APIProtocol.ActionToggleAutocast)
 private:
  class _Internal;

  ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
  ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  ::PROTOBUF_NAMESPACE_ID::int32 ability_id_;
  friend struct ::TableStruct_s2clientprotocol_2fui_2eproto;
};
// ===================================================================


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

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

// repeated .SC2APIProtocol.ControlGroup groups = 1;
inline int ObservationUI::_internal_groups_size() const {
  return groups_.size();
}
inline int ObservationUI::groups_size() const {
  return _internal_groups_size();
}
inline void ObservationUI::clear_groups() {
  groups_.Clear();
}
inline ::SC2APIProtocol::ControlGroup* ObservationUI::mutable_groups(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ObservationUI.groups)
  return groups_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ControlGroup >*
ObservationUI::mutable_groups() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.ObservationUI.groups)
  return &groups_;
}
inline const ::SC2APIProtocol::ControlGroup& ObservationUI::_internal_groups(int index) const {
  return groups_.Get(index);
}
inline const ::SC2APIProtocol::ControlGroup& ObservationUI::groups(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ObservationUI.groups)
  return _internal_groups(index);
}
inline ::SC2APIProtocol::ControlGroup* ObservationUI::_internal_add_groups() {
  return groups_.Add();
}
inline ::SC2APIProtocol::ControlGroup* ObservationUI::add_groups() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.ObservationUI.groups)
  return _internal_add_groups();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::ControlGroup >&
ObservationUI::groups() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.ObservationUI.groups)
  return groups_;
}

// optional .SC2APIProtocol.SinglePanel single = 2;
inline bool ObservationUI::_internal_has_single() const {
  return panel_case() == kSingle;
}
inline bool ObservationUI::has_single() const {
  return _internal_has_single();
}
inline void ObservationUI::set_has_single() {
  _oneof_case_[0] = kSingle;
}
inline void ObservationUI::clear_single() {
  if (_internal_has_single()) {
    delete panel_.single_;
    clear_has_panel();
  }
}
inline ::SC2APIProtocol::SinglePanel* ObservationUI::release_single() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ObservationUI.single)
  if (_internal_has_single()) {
    clear_has_panel();
      ::SC2APIProtocol::SinglePanel* temp = panel_.single_;
    panel_.single_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::SinglePanel& ObservationUI::_internal_single() const {
  return _internal_has_single()
      ? *panel_.single_
      : *reinterpret_cast< ::SC2APIProtocol::SinglePanel*>(&::SC2APIProtocol::_SinglePanel_default_instance_);
}
inline const ::SC2APIProtocol::SinglePanel& ObservationUI::single() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ObservationUI.single)
  return _internal_single();
}
inline ::SC2APIProtocol::SinglePanel* ObservationUI::_internal_mutable_single() {
  if (!_internal_has_single()) {
    clear_panel();
    set_has_single();
    panel_.single_ = CreateMaybeMessage< ::SC2APIProtocol::SinglePanel >(
        GetArenaNoVirtual());
  }
  return panel_.single_;
}
inline ::SC2APIProtocol::SinglePanel* ObservationUI::mutable_single() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ObservationUI.single)
  return _internal_mutable_single();
}

// optional .SC2APIProtocol.MultiPanel multi = 3;
inline bool ObservationUI::_internal_has_multi() const {
  return panel_case() == kMulti;
}
inline bool ObservationUI::has_multi() const {
  return _internal_has_multi();
}
inline void ObservationUI::set_has_multi() {
  _oneof_case_[0] = kMulti;
}
inline void ObservationUI::clear_multi() {
  if (_internal_has_multi()) {
    delete panel_.multi_;
    clear_has_panel();
  }
}
inline ::SC2APIProtocol::MultiPanel* ObservationUI::release_multi() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ObservationUI.multi)
  if (_internal_has_multi()) {
    clear_has_panel();
      ::SC2APIProtocol::MultiPanel* temp = panel_.multi_;
    panel_.multi_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::MultiPanel& ObservationUI::_internal_multi() const {
  return _internal_has_multi()
      ? *panel_.multi_
      : *reinterpret_cast< ::SC2APIProtocol::MultiPanel*>(&::SC2APIProtocol::_MultiPanel_default_instance_);
}
inline const ::SC2APIProtocol::MultiPanel& ObservationUI::multi() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ObservationUI.multi)
  return _internal_multi();
}
inline ::SC2APIProtocol::MultiPanel* ObservationUI::_internal_mutable_multi() {
  if (!_internal_has_multi()) {
    clear_panel();
    set_has_multi();
    panel_.multi_ = CreateMaybeMessage< ::SC2APIProtocol::MultiPanel >(
        GetArenaNoVirtual());
  }
  return panel_.multi_;
}
inline ::SC2APIProtocol::MultiPanel* ObservationUI::mutable_multi() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ObservationUI.multi)
  return _internal_mutable_multi();
}

// optional .SC2APIProtocol.CargoPanel cargo = 4;
inline bool ObservationUI::_internal_has_cargo() const {
  return panel_case() == kCargo;
}
inline bool ObservationUI::has_cargo() const {
  return _internal_has_cargo();
}
inline void ObservationUI::set_has_cargo() {
  _oneof_case_[0] = kCargo;
}
inline void ObservationUI::clear_cargo() {
  if (_internal_has_cargo()) {
    delete panel_.cargo_;
    clear_has_panel();
  }
}
inline ::SC2APIProtocol::CargoPanel* ObservationUI::release_cargo() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ObservationUI.cargo)
  if (_internal_has_cargo()) {
    clear_has_panel();
      ::SC2APIProtocol::CargoPanel* temp = panel_.cargo_;
    panel_.cargo_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::CargoPanel& ObservationUI::_internal_cargo() const {
  return _internal_has_cargo()
      ? *panel_.cargo_
      : *reinterpret_cast< ::SC2APIProtocol::CargoPanel*>(&::SC2APIProtocol::_CargoPanel_default_instance_);
}
inline const ::SC2APIProtocol::CargoPanel& ObservationUI::cargo() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ObservationUI.cargo)
  return _internal_cargo();
}
inline ::SC2APIProtocol::CargoPanel* ObservationUI::_internal_mutable_cargo() {
  if (!_internal_has_cargo()) {
    clear_panel();
    set_has_cargo();
    panel_.cargo_ = CreateMaybeMessage< ::SC2APIProtocol::CargoPanel >(
        GetArenaNoVirtual());
  }
  return panel_.cargo_;
}
inline ::SC2APIProtocol::CargoPanel* ObservationUI::mutable_cargo() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ObservationUI.cargo)
  return _internal_mutable_cargo();
}

// optional .SC2APIProtocol.ProductionPanel production = 5;
inline bool ObservationUI::_internal_has_production() const {
  return panel_case() == kProduction;
}
inline bool ObservationUI::has_production() const {
  return _internal_has_production();
}
inline void ObservationUI::set_has_production() {
  _oneof_case_[0] = kProduction;
}
inline void ObservationUI::clear_production() {
  if (_internal_has_production()) {
    delete panel_.production_;
    clear_has_panel();
  }
}
inline ::SC2APIProtocol::ProductionPanel* ObservationUI::release_production() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ObservationUI.production)
  if (_internal_has_production()) {
    clear_has_panel();
      ::SC2APIProtocol::ProductionPanel* temp = panel_.production_;
    panel_.production_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ProductionPanel& ObservationUI::_internal_production() const {
  return _internal_has_production()
      ? *panel_.production_
      : *reinterpret_cast< ::SC2APIProtocol::ProductionPanel*>(&::SC2APIProtocol::_ProductionPanel_default_instance_);
}
inline const ::SC2APIProtocol::ProductionPanel& ObservationUI::production() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ObservationUI.production)
  return _internal_production();
}
inline ::SC2APIProtocol::ProductionPanel* ObservationUI::_internal_mutable_production() {
  if (!_internal_has_production()) {
    clear_panel();
    set_has_production();
    panel_.production_ = CreateMaybeMessage< ::SC2APIProtocol::ProductionPanel >(
        GetArenaNoVirtual());
  }
  return panel_.production_;
}
inline ::SC2APIProtocol::ProductionPanel* ObservationUI::mutable_production() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ObservationUI.production)
  return _internal_mutable_production();
}

inline bool ObservationUI::has_panel() const {
  return panel_case() != PANEL_NOT_SET;
}
inline void ObservationUI::clear_has_panel() {
  _oneof_case_[0] = PANEL_NOT_SET;
}
inline ObservationUI::PanelCase ObservationUI::panel_case() const {
  return ObservationUI::PanelCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// ControlGroup

// optional uint32 control_group_index = 1;
inline bool ControlGroup::_internal_has_control_group_index() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ControlGroup::has_control_group_index() const {
  return _internal_has_control_group_index();
}
inline void ControlGroup::clear_control_group_index() {
  control_group_index_ = 0u;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ControlGroup::_internal_control_group_index() const {
  return control_group_index_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ControlGroup::control_group_index() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ControlGroup.control_group_index)
  return _internal_control_group_index();
}
inline void ControlGroup::_internal_set_control_group_index(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _has_bits_[0] |= 0x00000001u;
  control_group_index_ = value;
}
inline void ControlGroup::set_control_group_index(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_control_group_index(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ControlGroup.control_group_index)
}

// optional uint32 leader_unit_type = 2;
inline bool ControlGroup::_internal_has_leader_unit_type() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool ControlGroup::has_leader_unit_type() const {
  return _internal_has_leader_unit_type();
}
inline void ControlGroup::clear_leader_unit_type() {
  leader_unit_type_ = 0u;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ControlGroup::_internal_leader_unit_type() const {
  return leader_unit_type_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ControlGroup::leader_unit_type() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ControlGroup.leader_unit_type)
  return _internal_leader_unit_type();
}
inline void ControlGroup::_internal_set_leader_unit_type(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _has_bits_[0] |= 0x00000002u;
  leader_unit_type_ = value;
}
inline void ControlGroup::set_leader_unit_type(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_leader_unit_type(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ControlGroup.leader_unit_type)
}

// optional uint32 count = 3;
inline bool ControlGroup::_internal_has_count() const {
  bool value = (_has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool ControlGroup::has_count() const {
  return _internal_has_count();
}
inline void ControlGroup::clear_count() {
  count_ = 0u;
  _has_bits_[0] &= ~0x00000004u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ControlGroup::_internal_count() const {
  return count_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ControlGroup::count() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ControlGroup.count)
  return _internal_count();
}
inline void ControlGroup::_internal_set_count(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _has_bits_[0] |= 0x00000004u;
  count_ = value;
}
inline void ControlGroup::set_count(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_count(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ControlGroup.count)
}

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

// UnitInfo

// optional uint32 unit_type = 1;
inline bool UnitInfo::_internal_has_unit_type() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool UnitInfo::has_unit_type() const {
  return _internal_has_unit_type();
}
inline void UnitInfo::clear_unit_type() {
  unit_type_ = 0u;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 UnitInfo::_internal_unit_type() const {
  return unit_type_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 UnitInfo::unit_type() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.unit_type)
  return _internal_unit_type();
}
inline void UnitInfo::_internal_set_unit_type(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _has_bits_[0] |= 0x00000002u;
  unit_type_ = value;
}
inline void UnitInfo::set_unit_type(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_unit_type(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.unit_type)
}

// optional uint32 player_relative = 2;
inline bool UnitInfo::_internal_has_player_relative() const {
  bool value = (_has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool UnitInfo::has_player_relative() const {
  return _internal_has_player_relative();
}
inline void UnitInfo::clear_player_relative() {
  player_relative_ = 0u;
  _has_bits_[0] &= ~0x00000004u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 UnitInfo::_internal_player_relative() const {
  return player_relative_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 UnitInfo::player_relative() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.player_relative)
  return _internal_player_relative();
}
inline void UnitInfo::_internal_set_player_relative(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _has_bits_[0] |= 0x00000004u;
  player_relative_ = value;
}
inline void UnitInfo::set_player_relative(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_player_relative(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.player_relative)
}

// optional int32 health = 3;
inline bool UnitInfo::_internal_has_health() const {
  bool value = (_has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool UnitInfo::has_health() const {
  return _internal_has_health();
}
inline void UnitInfo::clear_health() {
  health_ = 0;
  _has_bits_[0] &= ~0x00000008u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::_internal_health() const {
  return health_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::health() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.health)
  return _internal_health();
}
inline void UnitInfo::_internal_set_health(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000008u;
  health_ = value;
}
inline void UnitInfo::set_health(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_health(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.health)
}

// optional int32 shields = 4;
inline bool UnitInfo::_internal_has_shields() const {
  bool value = (_has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline bool UnitInfo::has_shields() const {
  return _internal_has_shields();
}
inline void UnitInfo::clear_shields() {
  shields_ = 0;
  _has_bits_[0] &= ~0x00000010u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::_internal_shields() const {
  return shields_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::shields() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.shields)
  return _internal_shields();
}
inline void UnitInfo::_internal_set_shields(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000010u;
  shields_ = value;
}
inline void UnitInfo::set_shields(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_shields(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.shields)
}

// optional int32 energy = 5;
inline bool UnitInfo::_internal_has_energy() const {
  bool value = (_has_bits_[0] & 0x00000020u) != 0;
  return value;
}
inline bool UnitInfo::has_energy() const {
  return _internal_has_energy();
}
inline void UnitInfo::clear_energy() {
  energy_ = 0;
  _has_bits_[0] &= ~0x00000020u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::_internal_energy() const {
  return energy_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::energy() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.energy)
  return _internal_energy();
}
inline void UnitInfo::_internal_set_energy(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000020u;
  energy_ = value;
}
inline void UnitInfo::set_energy(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_energy(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.energy)
}

// optional int32 transport_slots_taken = 6;
inline bool UnitInfo::_internal_has_transport_slots_taken() const {
  bool value = (_has_bits_[0] & 0x00000040u) != 0;
  return value;
}
inline bool UnitInfo::has_transport_slots_taken() const {
  return _internal_has_transport_slots_taken();
}
inline void UnitInfo::clear_transport_slots_taken() {
  transport_slots_taken_ = 0;
  _has_bits_[0] &= ~0x00000040u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::_internal_transport_slots_taken() const {
  return transport_slots_taken_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::transport_slots_taken() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.transport_slots_taken)
  return _internal_transport_slots_taken();
}
inline void UnitInfo::_internal_set_transport_slots_taken(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000040u;
  transport_slots_taken_ = value;
}
inline void UnitInfo::set_transport_slots_taken(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_transport_slots_taken(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.transport_slots_taken)
}

// optional float build_progress = 7;
inline bool UnitInfo::_internal_has_build_progress() const {
  bool value = (_has_bits_[0] & 0x00000080u) != 0;
  return value;
}
inline bool UnitInfo::has_build_progress() const {
  return _internal_has_build_progress();
}
inline void UnitInfo::clear_build_progress() {
  build_progress_ = 0;
  _has_bits_[0] &= ~0x00000080u;
}
inline float UnitInfo::_internal_build_progress() const {
  return build_progress_;
}
inline float UnitInfo::build_progress() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.build_progress)
  return _internal_build_progress();
}
inline void UnitInfo::_internal_set_build_progress(float value) {
  _has_bits_[0] |= 0x00000080u;
  build_progress_ = value;
}
inline void UnitInfo::set_build_progress(float value) {
  _internal_set_build_progress(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.build_progress)
}

// optional .SC2APIProtocol.UnitInfo add_on = 8;
inline bool UnitInfo::_internal_has_add_on() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || add_on_ != nullptr);
  return value;
}
inline bool UnitInfo::has_add_on() const {
  return _internal_has_add_on();
}
inline void UnitInfo::clear_add_on() {
  if (add_on_ != nullptr) add_on_->Clear();
  _has_bits_[0] &= ~0x00000001u;
}
inline const ::SC2APIProtocol::UnitInfo& UnitInfo::_internal_add_on() const {
  const ::SC2APIProtocol::UnitInfo* p = add_on_;
  return p != nullptr ? *p : *reinterpret_cast<const ::SC2APIProtocol::UnitInfo*>(
      &::SC2APIProtocol::_UnitInfo_default_instance_);
}
inline const ::SC2APIProtocol::UnitInfo& UnitInfo::add_on() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.add_on)
  return _internal_add_on();
}
inline ::SC2APIProtocol::UnitInfo* UnitInfo::release_add_on() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.UnitInfo.add_on)
  _has_bits_[0] &= ~0x00000001u;
  ::SC2APIProtocol::UnitInfo* temp = add_on_;
  add_on_ = nullptr;
  return temp;
}
inline ::SC2APIProtocol::UnitInfo* UnitInfo::_internal_mutable_add_on() {
  _has_bits_[0] |= 0x00000001u;
  if (add_on_ == nullptr) {
    auto* p = CreateMaybeMessage<::SC2APIProtocol::UnitInfo>(GetArenaNoVirtual());
    add_on_ = p;
  }
  return add_on_;
}
inline ::SC2APIProtocol::UnitInfo* UnitInfo::mutable_add_on() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.UnitInfo.add_on)
  return _internal_mutable_add_on();
}
inline void UnitInfo::set_allocated_add_on(::SC2APIProtocol::UnitInfo* add_on) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete add_on_;
  }
  if (add_on) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      add_on = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, add_on, submessage_arena);
    }
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  add_on_ = add_on;
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.UnitInfo.add_on)
}

// optional int32 max_health = 9;
inline bool UnitInfo::_internal_has_max_health() const {
  bool value = (_has_bits_[0] & 0x00000100u) != 0;
  return value;
}
inline bool UnitInfo::has_max_health() const {
  return _internal_has_max_health();
}
inline void UnitInfo::clear_max_health() {
  max_health_ = 0;
  _has_bits_[0] &= ~0x00000100u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::_internal_max_health() const {
  return max_health_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::max_health() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.max_health)
  return _internal_max_health();
}
inline void UnitInfo::_internal_set_max_health(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000100u;
  max_health_ = value;
}
inline void UnitInfo::set_max_health(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_max_health(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.max_health)
}

// optional int32 max_shields = 10;
inline bool UnitInfo::_internal_has_max_shields() const {
  bool value = (_has_bits_[0] & 0x00000200u) != 0;
  return value;
}
inline bool UnitInfo::has_max_shields() const {
  return _internal_has_max_shields();
}
inline void UnitInfo::clear_max_shields() {
  max_shields_ = 0;
  _has_bits_[0] &= ~0x00000200u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::_internal_max_shields() const {
  return max_shields_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::max_shields() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.max_shields)
  return _internal_max_shields();
}
inline void UnitInfo::_internal_set_max_shields(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000200u;
  max_shields_ = value;
}
inline void UnitInfo::set_max_shields(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_max_shields(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.max_shields)
}

// optional int32 max_energy = 11;
inline bool UnitInfo::_internal_has_max_energy() const {
  bool value = (_has_bits_[0] & 0x00000400u) != 0;
  return value;
}
inline bool UnitInfo::has_max_energy() const {
  return _internal_has_max_energy();
}
inline void UnitInfo::clear_max_energy() {
  max_energy_ = 0;
  _has_bits_[0] &= ~0x00000400u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::_internal_max_energy() const {
  return max_energy_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 UnitInfo::max_energy() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.UnitInfo.max_energy)
  return _internal_max_energy();
}
inline void UnitInfo::_internal_set_max_energy(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000400u;
  max_energy_ = value;
}
inline void UnitInfo::set_max_energy(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_max_energy(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.UnitInfo.max_energy)
}

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

// SinglePanel

// optional .SC2APIProtocol.UnitInfo unit = 1;
inline bool SinglePanel::_internal_has_unit() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || unit_ != nullptr);
  return value;
}
inline bool SinglePanel::has_unit() const {
  return _internal_has_unit();
}
inline void SinglePanel::clear_unit() {
  if (unit_ != nullptr) unit_->Clear();
  _has_bits_[0] &= ~0x00000001u;
}
inline const ::SC2APIProtocol::UnitInfo& SinglePanel::_internal_unit() const {
  const ::SC2APIProtocol::UnitInfo* p = unit_;
  return p != nullptr ? *p : *reinterpret_cast<const ::SC2APIProtocol::UnitInfo*>(
      &::SC2APIProtocol::_UnitInfo_default_instance_);
}
inline const ::SC2APIProtocol::UnitInfo& SinglePanel::unit() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.SinglePanel.unit)
  return _internal_unit();
}
inline ::SC2APIProtocol::UnitInfo* SinglePanel::release_unit() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.SinglePanel.unit)
  _has_bits_[0] &= ~0x00000001u;
  ::SC2APIProtocol::UnitInfo* temp = unit_;
  unit_ = nullptr;
  return temp;
}
inline ::SC2APIProtocol::UnitInfo* SinglePanel::_internal_mutable_unit() {
  _has_bits_[0] |= 0x00000001u;
  if (unit_ == nullptr) {
    auto* p = CreateMaybeMessage<::SC2APIProtocol::UnitInfo>(GetArenaNoVirtual());
    unit_ = p;
  }
  return unit_;
}
inline ::SC2APIProtocol::UnitInfo* SinglePanel::mutable_unit() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.SinglePanel.unit)
  return _internal_mutable_unit();
}
inline void SinglePanel::set_allocated_unit(::SC2APIProtocol::UnitInfo* unit) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete unit_;
  }
  if (unit) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      unit = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, unit, submessage_arena);
    }
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  unit_ = unit;
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.SinglePanel.unit)
}

// optional int32 attack_upgrade_level = 2;
inline bool SinglePanel::_internal_has_attack_upgrade_level() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool SinglePanel::has_attack_upgrade_level() const {
  return _internal_has_attack_upgrade_level();
}
inline void SinglePanel::clear_attack_upgrade_level() {
  attack_upgrade_level_ = 0;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SinglePanel::_internal_attack_upgrade_level() const {
  return attack_upgrade_level_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SinglePanel::attack_upgrade_level() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.SinglePanel.attack_upgrade_level)
  return _internal_attack_upgrade_level();
}
inline void SinglePanel::_internal_set_attack_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000002u;
  attack_upgrade_level_ = value;
}
inline void SinglePanel::set_attack_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_attack_upgrade_level(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.SinglePanel.attack_upgrade_level)
}

// optional int32 armor_upgrade_level = 3;
inline bool SinglePanel::_internal_has_armor_upgrade_level() const {
  bool value = (_has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool SinglePanel::has_armor_upgrade_level() const {
  return _internal_has_armor_upgrade_level();
}
inline void SinglePanel::clear_armor_upgrade_level() {
  armor_upgrade_level_ = 0;
  _has_bits_[0] &= ~0x00000004u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SinglePanel::_internal_armor_upgrade_level() const {
  return armor_upgrade_level_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SinglePanel::armor_upgrade_level() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.SinglePanel.armor_upgrade_level)
  return _internal_armor_upgrade_level();
}
inline void SinglePanel::_internal_set_armor_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000004u;
  armor_upgrade_level_ = value;
}
inline void SinglePanel::set_armor_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_armor_upgrade_level(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.SinglePanel.armor_upgrade_level)
}

// optional int32 shield_upgrade_level = 4;
inline bool SinglePanel::_internal_has_shield_upgrade_level() const {
  bool value = (_has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool SinglePanel::has_shield_upgrade_level() const {
  return _internal_has_shield_upgrade_level();
}
inline void SinglePanel::clear_shield_upgrade_level() {
  shield_upgrade_level_ = 0;
  _has_bits_[0] &= ~0x00000008u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SinglePanel::_internal_shield_upgrade_level() const {
  return shield_upgrade_level_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SinglePanel::shield_upgrade_level() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.SinglePanel.shield_upgrade_level)
  return _internal_shield_upgrade_level();
}
inline void SinglePanel::_internal_set_shield_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000008u;
  shield_upgrade_level_ = value;
}
inline void SinglePanel::set_shield_upgrade_level(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_shield_upgrade_level(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.SinglePanel.shield_upgrade_level)
}

// repeated int32 buffs = 5;
inline int SinglePanel::_internal_buffs_size() const {
  return buffs_.size();
}
inline int SinglePanel::buffs_size() const {
  return _internal_buffs_size();
}
inline void SinglePanel::clear_buffs() {
  buffs_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SinglePanel::_internal_buffs(int index) const {
  return buffs_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::int32 SinglePanel::buffs(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.SinglePanel.buffs)
  return _internal_buffs(index);
}
inline void SinglePanel::set_buffs(int index, ::PROTOBUF_NAMESPACE_ID::int32 value) {
  buffs_.Set(index, value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.SinglePanel.buffs)
}
inline void SinglePanel::_internal_add_buffs(::PROTOBUF_NAMESPACE_ID::int32 value) {
  buffs_.Add(value);
}
inline void SinglePanel::add_buffs(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_add_buffs(value);
  // @@protoc_insertion_point(field_add:SC2APIProtocol.SinglePanel.buffs)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
SinglePanel::_internal_buffs() const {
  return buffs_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
SinglePanel::buffs() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.SinglePanel.buffs)
  return _internal_buffs();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
SinglePanel::_internal_mutable_buffs() {
  return &buffs_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
SinglePanel::mutable_buffs() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.SinglePanel.buffs)
  return _internal_mutable_buffs();
}

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

// MultiPanel

// repeated .SC2APIProtocol.UnitInfo units = 1;
inline int MultiPanel::_internal_units_size() const {
  return units_.size();
}
inline int MultiPanel::units_size() const {
  return _internal_units_size();
}
inline void MultiPanel::clear_units() {
  units_.Clear();
}
inline ::SC2APIProtocol::UnitInfo* MultiPanel::mutable_units(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.MultiPanel.units)
  return units_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >*
MultiPanel::mutable_units() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.MultiPanel.units)
  return &units_;
}
inline const ::SC2APIProtocol::UnitInfo& MultiPanel::_internal_units(int index) const {
  return units_.Get(index);
}
inline const ::SC2APIProtocol::UnitInfo& MultiPanel::units(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.MultiPanel.units)
  return _internal_units(index);
}
inline ::SC2APIProtocol::UnitInfo* MultiPanel::_internal_add_units() {
  return units_.Add();
}
inline ::SC2APIProtocol::UnitInfo* MultiPanel::add_units() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.MultiPanel.units)
  return _internal_add_units();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >&
MultiPanel::units() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.MultiPanel.units)
  return units_;
}

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

// CargoPanel

// optional .SC2APIProtocol.UnitInfo unit = 1;
inline bool CargoPanel::_internal_has_unit() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || unit_ != nullptr);
  return value;
}
inline bool CargoPanel::has_unit() const {
  return _internal_has_unit();
}
inline void CargoPanel::clear_unit() {
  if (unit_ != nullptr) unit_->Clear();
  _has_bits_[0] &= ~0x00000001u;
}
inline const ::SC2APIProtocol::UnitInfo& CargoPanel::_internal_unit() const {
  const ::SC2APIProtocol::UnitInfo* p = unit_;
  return p != nullptr ? *p : *reinterpret_cast<const ::SC2APIProtocol::UnitInfo*>(
      &::SC2APIProtocol::_UnitInfo_default_instance_);
}
inline const ::SC2APIProtocol::UnitInfo& CargoPanel::unit() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.CargoPanel.unit)
  return _internal_unit();
}
inline ::SC2APIProtocol::UnitInfo* CargoPanel::release_unit() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.CargoPanel.unit)
  _has_bits_[0] &= ~0x00000001u;
  ::SC2APIProtocol::UnitInfo* temp = unit_;
  unit_ = nullptr;
  return temp;
}
inline ::SC2APIProtocol::UnitInfo* CargoPanel::_internal_mutable_unit() {
  _has_bits_[0] |= 0x00000001u;
  if (unit_ == nullptr) {
    auto* p = CreateMaybeMessage<::SC2APIProtocol::UnitInfo>(GetArenaNoVirtual());
    unit_ = p;
  }
  return unit_;
}
inline ::SC2APIProtocol::UnitInfo* CargoPanel::mutable_unit() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.CargoPanel.unit)
  return _internal_mutable_unit();
}
inline void CargoPanel::set_allocated_unit(::SC2APIProtocol::UnitInfo* unit) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete unit_;
  }
  if (unit) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      unit = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, unit, submessage_arena);
    }
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  unit_ = unit;
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.CargoPanel.unit)
}

// repeated .SC2APIProtocol.UnitInfo passengers = 2;
inline int CargoPanel::_internal_passengers_size() const {
  return passengers_.size();
}
inline int CargoPanel::passengers_size() const {
  return _internal_passengers_size();
}
inline void CargoPanel::clear_passengers() {
  passengers_.Clear();
}
inline ::SC2APIProtocol::UnitInfo* CargoPanel::mutable_passengers(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.CargoPanel.passengers)
  return passengers_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >*
CargoPanel::mutable_passengers() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.CargoPanel.passengers)
  return &passengers_;
}
inline const ::SC2APIProtocol::UnitInfo& CargoPanel::_internal_passengers(int index) const {
  return passengers_.Get(index);
}
inline const ::SC2APIProtocol::UnitInfo& CargoPanel::passengers(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.CargoPanel.passengers)
  return _internal_passengers(index);
}
inline ::SC2APIProtocol::UnitInfo* CargoPanel::_internal_add_passengers() {
  return passengers_.Add();
}
inline ::SC2APIProtocol::UnitInfo* CargoPanel::add_passengers() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.CargoPanel.passengers)
  return _internal_add_passengers();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >&
CargoPanel::passengers() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.CargoPanel.passengers)
  return passengers_;
}

// optional int32 slots_available = 3;
inline bool CargoPanel::_internal_has_slots_available() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CargoPanel::has_slots_available() const {
  return _internal_has_slots_available();
}
inline void CargoPanel::clear_slots_available() {
  slots_available_ = 0;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 CargoPanel::_internal_slots_available() const {
  return slots_available_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 CargoPanel::slots_available() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.CargoPanel.slots_available)
  return _internal_slots_available();
}
inline void CargoPanel::_internal_set_slots_available(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000002u;
  slots_available_ = value;
}
inline void CargoPanel::set_slots_available(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_slots_available(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.CargoPanel.slots_available)
}

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

// BuildItem

// optional uint32 ability_id = 1;
inline bool BuildItem::_internal_has_ability_id() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool BuildItem::has_ability_id() const {
  return _internal_has_ability_id();
}
inline void BuildItem::clear_ability_id() {
  ability_id_ = 0u;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 BuildItem::_internal_ability_id() const {
  return ability_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 BuildItem::ability_id() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.BuildItem.ability_id)
  return _internal_ability_id();
}
inline void BuildItem::_internal_set_ability_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _has_bits_[0] |= 0x00000001u;
  ability_id_ = value;
}
inline void BuildItem::set_ability_id(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_ability_id(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.BuildItem.ability_id)
}

// optional float build_progress = 2;
inline bool BuildItem::_internal_has_build_progress() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool BuildItem::has_build_progress() const {
  return _internal_has_build_progress();
}
inline void BuildItem::clear_build_progress() {
  build_progress_ = 0;
  _has_bits_[0] &= ~0x00000002u;
}
inline float BuildItem::_internal_build_progress() const {
  return build_progress_;
}
inline float BuildItem::build_progress() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.BuildItem.build_progress)
  return _internal_build_progress();
}
inline void BuildItem::_internal_set_build_progress(float value) {
  _has_bits_[0] |= 0x00000002u;
  build_progress_ = value;
}
inline void BuildItem::set_build_progress(float value) {
  _internal_set_build_progress(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.BuildItem.build_progress)
}

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

// ProductionPanel

// optional .SC2APIProtocol.UnitInfo unit = 1;
inline bool ProductionPanel::_internal_has_unit() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || unit_ != nullptr);
  return value;
}
inline bool ProductionPanel::has_unit() const {
  return _internal_has_unit();
}
inline void ProductionPanel::clear_unit() {
  if (unit_ != nullptr) unit_->Clear();
  _has_bits_[0] &= ~0x00000001u;
}
inline const ::SC2APIProtocol::UnitInfo& ProductionPanel::_internal_unit() const {
  const ::SC2APIProtocol::UnitInfo* p = unit_;
  return p != nullptr ? *p : *reinterpret_cast<const ::SC2APIProtocol::UnitInfo*>(
      &::SC2APIProtocol::_UnitInfo_default_instance_);
}
inline const ::SC2APIProtocol::UnitInfo& ProductionPanel::unit() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ProductionPanel.unit)
  return _internal_unit();
}
inline ::SC2APIProtocol::UnitInfo* ProductionPanel::release_unit() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ProductionPanel.unit)
  _has_bits_[0] &= ~0x00000001u;
  ::SC2APIProtocol::UnitInfo* temp = unit_;
  unit_ = nullptr;
  return temp;
}
inline ::SC2APIProtocol::UnitInfo* ProductionPanel::_internal_mutable_unit() {
  _has_bits_[0] |= 0x00000001u;
  if (unit_ == nullptr) {
    auto* p = CreateMaybeMessage<::SC2APIProtocol::UnitInfo>(GetArenaNoVirtual());
    unit_ = p;
  }
  return unit_;
}
inline ::SC2APIProtocol::UnitInfo* ProductionPanel::mutable_unit() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ProductionPanel.unit)
  return _internal_mutable_unit();
}
inline void ProductionPanel::set_allocated_unit(::SC2APIProtocol::UnitInfo* unit) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == nullptr) {
    delete unit_;
  }
  if (unit) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      unit = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, unit, submessage_arena);
    }
    _has_bits_[0] |= 0x00000001u;
  } else {
    _has_bits_[0] &= ~0x00000001u;
  }
  unit_ = unit;
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ProductionPanel.unit)
}

// repeated .SC2APIProtocol.UnitInfo build_queue = 2;
inline int ProductionPanel::_internal_build_queue_size() const {
  return build_queue_.size();
}
inline int ProductionPanel::build_queue_size() const {
  return _internal_build_queue_size();
}
inline void ProductionPanel::clear_build_queue() {
  build_queue_.Clear();
}
inline ::SC2APIProtocol::UnitInfo* ProductionPanel::mutable_build_queue(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ProductionPanel.build_queue)
  return build_queue_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >*
ProductionPanel::mutable_build_queue() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.ProductionPanel.build_queue)
  return &build_queue_;
}
inline const ::SC2APIProtocol::UnitInfo& ProductionPanel::_internal_build_queue(int index) const {
  return build_queue_.Get(index);
}
inline const ::SC2APIProtocol::UnitInfo& ProductionPanel::build_queue(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ProductionPanel.build_queue)
  return _internal_build_queue(index);
}
inline ::SC2APIProtocol::UnitInfo* ProductionPanel::_internal_add_build_queue() {
  return build_queue_.Add();
}
inline ::SC2APIProtocol::UnitInfo* ProductionPanel::add_build_queue() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.ProductionPanel.build_queue)
  return _internal_add_build_queue();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::UnitInfo >&
ProductionPanel::build_queue() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.ProductionPanel.build_queue)
  return build_queue_;
}

// repeated .SC2APIProtocol.BuildItem production_queue = 3;
inline int ProductionPanel::_internal_production_queue_size() const {
  return production_queue_.size();
}
inline int ProductionPanel::production_queue_size() const {
  return _internal_production_queue_size();
}
inline void ProductionPanel::clear_production_queue() {
  production_queue_.Clear();
}
inline ::SC2APIProtocol::BuildItem* ProductionPanel::mutable_production_queue(int index) {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ProductionPanel.production_queue)
  return production_queue_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::BuildItem >*
ProductionPanel::mutable_production_queue() {
  // @@protoc_insertion_point(field_mutable_list:SC2APIProtocol.ProductionPanel.production_queue)
  return &production_queue_;
}
inline const ::SC2APIProtocol::BuildItem& ProductionPanel::_internal_production_queue(int index) const {
  return production_queue_.Get(index);
}
inline const ::SC2APIProtocol::BuildItem& ProductionPanel::production_queue(int index) const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ProductionPanel.production_queue)
  return _internal_production_queue(index);
}
inline ::SC2APIProtocol::BuildItem* ProductionPanel::_internal_add_production_queue() {
  return production_queue_.Add();
}
inline ::SC2APIProtocol::BuildItem* ProductionPanel::add_production_queue() {
  // @@protoc_insertion_point(field_add:SC2APIProtocol.ProductionPanel.production_queue)
  return _internal_add_production_queue();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::SC2APIProtocol::BuildItem >&
ProductionPanel::production_queue() const {
  // @@protoc_insertion_point(field_list:SC2APIProtocol.ProductionPanel.production_queue)
  return production_queue_;
}

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

// ActionUI

// optional .SC2APIProtocol.ActionControlGroup control_group = 1;
inline bool ActionUI::_internal_has_control_group() const {
  return action_case() == kControlGroup;
}
inline bool ActionUI::has_control_group() const {
  return _internal_has_control_group();
}
inline void ActionUI::set_has_control_group() {
  _oneof_case_[0] = kControlGroup;
}
inline void ActionUI::clear_control_group() {
  if (_internal_has_control_group()) {
    delete action_.control_group_;
    clear_has_action();
  }
}
inline ::SC2APIProtocol::ActionControlGroup* ActionUI::release_control_group() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ActionUI.control_group)
  if (_internal_has_control_group()) {
    clear_has_action();
      ::SC2APIProtocol::ActionControlGroup* temp = action_.control_group_;
    action_.control_group_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ActionControlGroup& ActionUI::_internal_control_group() const {
  return _internal_has_control_group()
      ? *action_.control_group_
      : *reinterpret_cast< ::SC2APIProtocol::ActionControlGroup*>(&::SC2APIProtocol::_ActionControlGroup_default_instance_);
}
inline const ::SC2APIProtocol::ActionControlGroup& ActionUI::control_group() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionUI.control_group)
  return _internal_control_group();
}
inline ::SC2APIProtocol::ActionControlGroup* ActionUI::_internal_mutable_control_group() {
  if (!_internal_has_control_group()) {
    clear_action();
    set_has_control_group();
    action_.control_group_ = CreateMaybeMessage< ::SC2APIProtocol::ActionControlGroup >(
        GetArenaNoVirtual());
  }
  return action_.control_group_;
}
inline ::SC2APIProtocol::ActionControlGroup* ActionUI::mutable_control_group() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ActionUI.control_group)
  return _internal_mutable_control_group();
}

// optional .SC2APIProtocol.ActionSelectArmy select_army = 2;
inline bool ActionUI::_internal_has_select_army() const {
  return action_case() == kSelectArmy;
}
inline bool ActionUI::has_select_army() const {
  return _internal_has_select_army();
}
inline void ActionUI::set_has_select_army() {
  _oneof_case_[0] = kSelectArmy;
}
inline void ActionUI::clear_select_army() {
  if (_internal_has_select_army()) {
    delete action_.select_army_;
    clear_has_action();
  }
}
inline ::SC2APIProtocol::ActionSelectArmy* ActionUI::release_select_army() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ActionUI.select_army)
  if (_internal_has_select_army()) {
    clear_has_action();
      ::SC2APIProtocol::ActionSelectArmy* temp = action_.select_army_;
    action_.select_army_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ActionSelectArmy& ActionUI::_internal_select_army() const {
  return _internal_has_select_army()
      ? *action_.select_army_
      : *reinterpret_cast< ::SC2APIProtocol::ActionSelectArmy*>(&::SC2APIProtocol::_ActionSelectArmy_default_instance_);
}
inline const ::SC2APIProtocol::ActionSelectArmy& ActionUI::select_army() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionUI.select_army)
  return _internal_select_army();
}
inline ::SC2APIProtocol::ActionSelectArmy* ActionUI::_internal_mutable_select_army() {
  if (!_internal_has_select_army()) {
    clear_action();
    set_has_select_army();
    action_.select_army_ = CreateMaybeMessage< ::SC2APIProtocol::ActionSelectArmy >(
        GetArenaNoVirtual());
  }
  return action_.select_army_;
}
inline ::SC2APIProtocol::ActionSelectArmy* ActionUI::mutable_select_army() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ActionUI.select_army)
  return _internal_mutable_select_army();
}

// optional .SC2APIProtocol.ActionSelectWarpGates select_warp_gates = 3;
inline bool ActionUI::_internal_has_select_warp_gates() const {
  return action_case() == kSelectWarpGates;
}
inline bool ActionUI::has_select_warp_gates() const {
  return _internal_has_select_warp_gates();
}
inline void ActionUI::set_has_select_warp_gates() {
  _oneof_case_[0] = kSelectWarpGates;
}
inline void ActionUI::clear_select_warp_gates() {
  if (_internal_has_select_warp_gates()) {
    delete action_.select_warp_gates_;
    clear_has_action();
  }
}
inline ::SC2APIProtocol::ActionSelectWarpGates* ActionUI::release_select_warp_gates() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ActionUI.select_warp_gates)
  if (_internal_has_select_warp_gates()) {
    clear_has_action();
      ::SC2APIProtocol::ActionSelectWarpGates* temp = action_.select_warp_gates_;
    action_.select_warp_gates_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ActionSelectWarpGates& ActionUI::_internal_select_warp_gates() const {
  return _internal_has_select_warp_gates()
      ? *action_.select_warp_gates_
      : *reinterpret_cast< ::SC2APIProtocol::ActionSelectWarpGates*>(&::SC2APIProtocol::_ActionSelectWarpGates_default_instance_);
}
inline const ::SC2APIProtocol::ActionSelectWarpGates& ActionUI::select_warp_gates() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionUI.select_warp_gates)
  return _internal_select_warp_gates();
}
inline ::SC2APIProtocol::ActionSelectWarpGates* ActionUI::_internal_mutable_select_warp_gates() {
  if (!_internal_has_select_warp_gates()) {
    clear_action();
    set_has_select_warp_gates();
    action_.select_warp_gates_ = CreateMaybeMessage< ::SC2APIProtocol::ActionSelectWarpGates >(
        GetArenaNoVirtual());
  }
  return action_.select_warp_gates_;
}
inline ::SC2APIProtocol::ActionSelectWarpGates* ActionUI::mutable_select_warp_gates() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ActionUI.select_warp_gates)
  return _internal_mutable_select_warp_gates();
}

// optional .SC2APIProtocol.ActionSelectLarva select_larva = 4;
inline bool ActionUI::_internal_has_select_larva() const {
  return action_case() == kSelectLarva;
}
inline bool ActionUI::has_select_larva() const {
  return _internal_has_select_larva();
}
inline void ActionUI::set_has_select_larva() {
  _oneof_case_[0] = kSelectLarva;
}
inline void ActionUI::clear_select_larva() {
  if (_internal_has_select_larva()) {
    delete action_.select_larva_;
    clear_has_action();
  }
}
inline ::SC2APIProtocol::ActionSelectLarva* ActionUI::release_select_larva() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ActionUI.select_larva)
  if (_internal_has_select_larva()) {
    clear_has_action();
      ::SC2APIProtocol::ActionSelectLarva* temp = action_.select_larva_;
    action_.select_larva_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ActionSelectLarva& ActionUI::_internal_select_larva() const {
  return _internal_has_select_larva()
      ? *action_.select_larva_
      : *reinterpret_cast< ::SC2APIProtocol::ActionSelectLarva*>(&::SC2APIProtocol::_ActionSelectLarva_default_instance_);
}
inline const ::SC2APIProtocol::ActionSelectLarva& ActionUI::select_larva() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionUI.select_larva)
  return _internal_select_larva();
}
inline ::SC2APIProtocol::ActionSelectLarva* ActionUI::_internal_mutable_select_larva() {
  if (!_internal_has_select_larva()) {
    clear_action();
    set_has_select_larva();
    action_.select_larva_ = CreateMaybeMessage< ::SC2APIProtocol::ActionSelectLarva >(
        GetArenaNoVirtual());
  }
  return action_.select_larva_;
}
inline ::SC2APIProtocol::ActionSelectLarva* ActionUI::mutable_select_larva() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ActionUI.select_larva)
  return _internal_mutable_select_larva();
}

// optional .SC2APIProtocol.ActionSelectIdleWorker select_idle_worker = 5;
inline bool ActionUI::_internal_has_select_idle_worker() const {
  return action_case() == kSelectIdleWorker;
}
inline bool ActionUI::has_select_idle_worker() const {
  return _internal_has_select_idle_worker();
}
inline void ActionUI::set_has_select_idle_worker() {
  _oneof_case_[0] = kSelectIdleWorker;
}
inline void ActionUI::clear_select_idle_worker() {
  if (_internal_has_select_idle_worker()) {
    delete action_.select_idle_worker_;
    clear_has_action();
  }
}
inline ::SC2APIProtocol::ActionSelectIdleWorker* ActionUI::release_select_idle_worker() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ActionUI.select_idle_worker)
  if (_internal_has_select_idle_worker()) {
    clear_has_action();
      ::SC2APIProtocol::ActionSelectIdleWorker* temp = action_.select_idle_worker_;
    action_.select_idle_worker_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ActionSelectIdleWorker& ActionUI::_internal_select_idle_worker() const {
  return _internal_has_select_idle_worker()
      ? *action_.select_idle_worker_
      : *reinterpret_cast< ::SC2APIProtocol::ActionSelectIdleWorker*>(&::SC2APIProtocol::_ActionSelectIdleWorker_default_instance_);
}
inline const ::SC2APIProtocol::ActionSelectIdleWorker& ActionUI::select_idle_worker() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionUI.select_idle_worker)
  return _internal_select_idle_worker();
}
inline ::SC2APIProtocol::ActionSelectIdleWorker* ActionUI::_internal_mutable_select_idle_worker() {
  if (!_internal_has_select_idle_worker()) {
    clear_action();
    set_has_select_idle_worker();
    action_.select_idle_worker_ = CreateMaybeMessage< ::SC2APIProtocol::ActionSelectIdleWorker >(
        GetArenaNoVirtual());
  }
  return action_.select_idle_worker_;
}
inline ::SC2APIProtocol::ActionSelectIdleWorker* ActionUI::mutable_select_idle_worker() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ActionUI.select_idle_worker)
  return _internal_mutable_select_idle_worker();
}

// optional .SC2APIProtocol.ActionMultiPanel multi_panel = 6;
inline bool ActionUI::_internal_has_multi_panel() const {
  return action_case() == kMultiPanel;
}
inline bool ActionUI::has_multi_panel() const {
  return _internal_has_multi_panel();
}
inline void ActionUI::set_has_multi_panel() {
  _oneof_case_[0] = kMultiPanel;
}
inline void ActionUI::clear_multi_panel() {
  if (_internal_has_multi_panel()) {
    delete action_.multi_panel_;
    clear_has_action();
  }
}
inline ::SC2APIProtocol::ActionMultiPanel* ActionUI::release_multi_panel() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ActionUI.multi_panel)
  if (_internal_has_multi_panel()) {
    clear_has_action();
      ::SC2APIProtocol::ActionMultiPanel* temp = action_.multi_panel_;
    action_.multi_panel_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ActionMultiPanel& ActionUI::_internal_multi_panel() const {
  return _internal_has_multi_panel()
      ? *action_.multi_panel_
      : *reinterpret_cast< ::SC2APIProtocol::ActionMultiPanel*>(&::SC2APIProtocol::_ActionMultiPanel_default_instance_);
}
inline const ::SC2APIProtocol::ActionMultiPanel& ActionUI::multi_panel() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionUI.multi_panel)
  return _internal_multi_panel();
}
inline ::SC2APIProtocol::ActionMultiPanel* ActionUI::_internal_mutable_multi_panel() {
  if (!_internal_has_multi_panel()) {
    clear_action();
    set_has_multi_panel();
    action_.multi_panel_ = CreateMaybeMessage< ::SC2APIProtocol::ActionMultiPanel >(
        GetArenaNoVirtual());
  }
  return action_.multi_panel_;
}
inline ::SC2APIProtocol::ActionMultiPanel* ActionUI::mutable_multi_panel() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ActionUI.multi_panel)
  return _internal_mutable_multi_panel();
}

// optional .SC2APIProtocol.ActionCargoPanelUnload cargo_panel = 7;
inline bool ActionUI::_internal_has_cargo_panel() const {
  return action_case() == kCargoPanel;
}
inline bool ActionUI::has_cargo_panel() const {
  return _internal_has_cargo_panel();
}
inline void ActionUI::set_has_cargo_panel() {
  _oneof_case_[0] = kCargoPanel;
}
inline void ActionUI::clear_cargo_panel() {
  if (_internal_has_cargo_panel()) {
    delete action_.cargo_panel_;
    clear_has_action();
  }
}
inline ::SC2APIProtocol::ActionCargoPanelUnload* ActionUI::release_cargo_panel() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ActionUI.cargo_panel)
  if (_internal_has_cargo_panel()) {
    clear_has_action();
      ::SC2APIProtocol::ActionCargoPanelUnload* temp = action_.cargo_panel_;
    action_.cargo_panel_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ActionCargoPanelUnload& ActionUI::_internal_cargo_panel() const {
  return _internal_has_cargo_panel()
      ? *action_.cargo_panel_
      : *reinterpret_cast< ::SC2APIProtocol::ActionCargoPanelUnload*>(&::SC2APIProtocol::_ActionCargoPanelUnload_default_instance_);
}
inline const ::SC2APIProtocol::ActionCargoPanelUnload& ActionUI::cargo_panel() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionUI.cargo_panel)
  return _internal_cargo_panel();
}
inline ::SC2APIProtocol::ActionCargoPanelUnload* ActionUI::_internal_mutable_cargo_panel() {
  if (!_internal_has_cargo_panel()) {
    clear_action();
    set_has_cargo_panel();
    action_.cargo_panel_ = CreateMaybeMessage< ::SC2APIProtocol::ActionCargoPanelUnload >(
        GetArenaNoVirtual());
  }
  return action_.cargo_panel_;
}
inline ::SC2APIProtocol::ActionCargoPanelUnload* ActionUI::mutable_cargo_panel() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ActionUI.cargo_panel)
  return _internal_mutable_cargo_panel();
}

// optional .SC2APIProtocol.ActionProductionPanelRemoveFromQueue production_panel = 8;
inline bool ActionUI::_internal_has_production_panel() const {
  return action_case() == kProductionPanel;
}
inline bool ActionUI::has_production_panel() const {
  return _internal_has_production_panel();
}
inline void ActionUI::set_has_production_panel() {
  _oneof_case_[0] = kProductionPanel;
}
inline void ActionUI::clear_production_panel() {
  if (_internal_has_production_panel()) {
    delete action_.production_panel_;
    clear_has_action();
  }
}
inline ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* ActionUI::release_production_panel() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ActionUI.production_panel)
  if (_internal_has_production_panel()) {
    clear_has_action();
      ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* temp = action_.production_panel_;
    action_.production_panel_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue& ActionUI::_internal_production_panel() const {
  return _internal_has_production_panel()
      ? *action_.production_panel_
      : *reinterpret_cast< ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue*>(&::SC2APIProtocol::_ActionProductionPanelRemoveFromQueue_default_instance_);
}
inline const ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue& ActionUI::production_panel() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionUI.production_panel)
  return _internal_production_panel();
}
inline ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* ActionUI::_internal_mutable_production_panel() {
  if (!_internal_has_production_panel()) {
    clear_action();
    set_has_production_panel();
    action_.production_panel_ = CreateMaybeMessage< ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue >(
        GetArenaNoVirtual());
  }
  return action_.production_panel_;
}
inline ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* ActionUI::mutable_production_panel() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ActionUI.production_panel)
  return _internal_mutable_production_panel();
}

// optional .SC2APIProtocol.ActionToggleAutocast toggle_autocast = 9;
inline bool ActionUI::_internal_has_toggle_autocast() const {
  return action_case() == kToggleAutocast;
}
inline bool ActionUI::has_toggle_autocast() const {
  return _internal_has_toggle_autocast();
}
inline void ActionUI::set_has_toggle_autocast() {
  _oneof_case_[0] = kToggleAutocast;
}
inline void ActionUI::clear_toggle_autocast() {
  if (_internal_has_toggle_autocast()) {
    delete action_.toggle_autocast_;
    clear_has_action();
  }
}
inline ::SC2APIProtocol::ActionToggleAutocast* ActionUI::release_toggle_autocast() {
  // @@protoc_insertion_point(field_release:SC2APIProtocol.ActionUI.toggle_autocast)
  if (_internal_has_toggle_autocast()) {
    clear_has_action();
      ::SC2APIProtocol::ActionToggleAutocast* temp = action_.toggle_autocast_;
    action_.toggle_autocast_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::SC2APIProtocol::ActionToggleAutocast& ActionUI::_internal_toggle_autocast() const {
  return _internal_has_toggle_autocast()
      ? *action_.toggle_autocast_
      : *reinterpret_cast< ::SC2APIProtocol::ActionToggleAutocast*>(&::SC2APIProtocol::_ActionToggleAutocast_default_instance_);
}
inline const ::SC2APIProtocol::ActionToggleAutocast& ActionUI::toggle_autocast() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionUI.toggle_autocast)
  return _internal_toggle_autocast();
}
inline ::SC2APIProtocol::ActionToggleAutocast* ActionUI::_internal_mutable_toggle_autocast() {
  if (!_internal_has_toggle_autocast()) {
    clear_action();
    set_has_toggle_autocast();
    action_.toggle_autocast_ = CreateMaybeMessage< ::SC2APIProtocol::ActionToggleAutocast >(
        GetArenaNoVirtual());
  }
  return action_.toggle_autocast_;
}
inline ::SC2APIProtocol::ActionToggleAutocast* ActionUI::mutable_toggle_autocast() {
  // @@protoc_insertion_point(field_mutable:SC2APIProtocol.ActionUI.toggle_autocast)
  return _internal_mutable_toggle_autocast();
}

inline bool ActionUI::has_action() const {
  return action_case() != ACTION_NOT_SET;
}
inline void ActionUI::clear_has_action() {
  _oneof_case_[0] = ACTION_NOT_SET;
}
inline ActionUI::ActionCase ActionUI::action_case() const {
  return ActionUI::ActionCase(_oneof_case_[0]);
}
// -------------------------------------------------------------------

// ActionControlGroup

// optional .SC2APIProtocol.ActionControlGroup.ControlGroupAction action = 1;
inline bool ActionControlGroup::_internal_has_action() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool ActionControlGroup::has_action() const {
  return _internal_has_action();
}
inline void ActionControlGroup::clear_action() {
  action_ = 1;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::SC2APIProtocol::ActionControlGroup_ControlGroupAction ActionControlGroup::_internal_action() const {
  return static_cast< ::SC2APIProtocol::ActionControlGroup_ControlGroupAction >(action_);
}
inline ::SC2APIProtocol::ActionControlGroup_ControlGroupAction ActionControlGroup::action() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionControlGroup.action)
  return _internal_action();
}
inline void ActionControlGroup::_internal_set_action(::SC2APIProtocol::ActionControlGroup_ControlGroupAction value) {
  assert(::SC2APIProtocol::ActionControlGroup_ControlGroupAction_IsValid(value));
  _has_bits_[0] |= 0x00000002u;
  action_ = value;
}
inline void ActionControlGroup::set_action(::SC2APIProtocol::ActionControlGroup_ControlGroupAction value) {
  _internal_set_action(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionControlGroup.action)
}

// optional uint32 control_group_index = 2;
inline bool ActionControlGroup::_internal_has_control_group_index() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ActionControlGroup::has_control_group_index() const {
  return _internal_has_control_group_index();
}
inline void ActionControlGroup::clear_control_group_index() {
  control_group_index_ = 0u;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ActionControlGroup::_internal_control_group_index() const {
  return control_group_index_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 ActionControlGroup::control_group_index() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionControlGroup.control_group_index)
  return _internal_control_group_index();
}
inline void ActionControlGroup::_internal_set_control_group_index(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _has_bits_[0] |= 0x00000001u;
  control_group_index_ = value;
}
inline void ActionControlGroup::set_control_group_index(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_control_group_index(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionControlGroup.control_group_index)
}

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

// ActionSelectArmy

// optional bool selection_add = 1;
inline bool ActionSelectArmy::_internal_has_selection_add() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ActionSelectArmy::has_selection_add() const {
  return _internal_has_selection_add();
}
inline void ActionSelectArmy::clear_selection_add() {
  selection_add_ = false;
  _has_bits_[0] &= ~0x00000001u;
}
inline bool ActionSelectArmy::_internal_selection_add() const {
  return selection_add_;
}
inline bool ActionSelectArmy::selection_add() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionSelectArmy.selection_add)
  return _internal_selection_add();
}
inline void ActionSelectArmy::_internal_set_selection_add(bool value) {
  _has_bits_[0] |= 0x00000001u;
  selection_add_ = value;
}
inline void ActionSelectArmy::set_selection_add(bool value) {
  _internal_set_selection_add(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionSelectArmy.selection_add)
}

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

// ActionSelectWarpGates

// optional bool selection_add = 1;
inline bool ActionSelectWarpGates::_internal_has_selection_add() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ActionSelectWarpGates::has_selection_add() const {
  return _internal_has_selection_add();
}
inline void ActionSelectWarpGates::clear_selection_add() {
  selection_add_ = false;
  _has_bits_[0] &= ~0x00000001u;
}
inline bool ActionSelectWarpGates::_internal_selection_add() const {
  return selection_add_;
}
inline bool ActionSelectWarpGates::selection_add() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionSelectWarpGates.selection_add)
  return _internal_selection_add();
}
inline void ActionSelectWarpGates::_internal_set_selection_add(bool value) {
  _has_bits_[0] |= 0x00000001u;
  selection_add_ = value;
}
inline void ActionSelectWarpGates::set_selection_add(bool value) {
  _internal_set_selection_add(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionSelectWarpGates.selection_add)
}

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

// ActionSelectLarva

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

// ActionSelectIdleWorker

// optional .SC2APIProtocol.ActionSelectIdleWorker.Type type = 1;
inline bool ActionSelectIdleWorker::_internal_has_type() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ActionSelectIdleWorker::has_type() const {
  return _internal_has_type();
}
inline void ActionSelectIdleWorker::clear_type() {
  type_ = 1;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::SC2APIProtocol::ActionSelectIdleWorker_Type ActionSelectIdleWorker::_internal_type() const {
  return static_cast< ::SC2APIProtocol::ActionSelectIdleWorker_Type >(type_);
}
inline ::SC2APIProtocol::ActionSelectIdleWorker_Type ActionSelectIdleWorker::type() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionSelectIdleWorker.type)
  return _internal_type();
}
inline void ActionSelectIdleWorker::_internal_set_type(::SC2APIProtocol::ActionSelectIdleWorker_Type value) {
  assert(::SC2APIProtocol::ActionSelectIdleWorker_Type_IsValid(value));
  _has_bits_[0] |= 0x00000001u;
  type_ = value;
}
inline void ActionSelectIdleWorker::set_type(::SC2APIProtocol::ActionSelectIdleWorker_Type value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionSelectIdleWorker.type)
}

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

// ActionMultiPanel

// optional .SC2APIProtocol.ActionMultiPanel.Type type = 1;
inline bool ActionMultiPanel::_internal_has_type() const {
  bool value = (_has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool ActionMultiPanel::has_type() const {
  return _internal_has_type();
}
inline void ActionMultiPanel::clear_type() {
  type_ = 1;
  _has_bits_[0] &= ~0x00000002u;
}
inline ::SC2APIProtocol::ActionMultiPanel_Type ActionMultiPanel::_internal_type() const {
  return static_cast< ::SC2APIProtocol::ActionMultiPanel_Type >(type_);
}
inline ::SC2APIProtocol::ActionMultiPanel_Type ActionMultiPanel::type() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionMultiPanel.type)
  return _internal_type();
}
inline void ActionMultiPanel::_internal_set_type(::SC2APIProtocol::ActionMultiPanel_Type value) {
  assert(::SC2APIProtocol::ActionMultiPanel_Type_IsValid(value));
  _has_bits_[0] |= 0x00000002u;
  type_ = value;
}
inline void ActionMultiPanel::set_type(::SC2APIProtocol::ActionMultiPanel_Type value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionMultiPanel.type)
}

// optional int32 unit_index = 2;
inline bool ActionMultiPanel::_internal_has_unit_index() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ActionMultiPanel::has_unit_index() const {
  return _internal_has_unit_index();
}
inline void ActionMultiPanel::clear_unit_index() {
  unit_index_ = 0;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 ActionMultiPanel::_internal_unit_index() const {
  return unit_index_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 ActionMultiPanel::unit_index() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionMultiPanel.unit_index)
  return _internal_unit_index();
}
inline void ActionMultiPanel::_internal_set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000001u;
  unit_index_ = value;
}
inline void ActionMultiPanel::set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_unit_index(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionMultiPanel.unit_index)
}

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

// ActionCargoPanelUnload

// optional int32 unit_index = 1;
inline bool ActionCargoPanelUnload::_internal_has_unit_index() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ActionCargoPanelUnload::has_unit_index() const {
  return _internal_has_unit_index();
}
inline void ActionCargoPanelUnload::clear_unit_index() {
  unit_index_ = 0;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 ActionCargoPanelUnload::_internal_unit_index() const {
  return unit_index_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 ActionCargoPanelUnload::unit_index() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionCargoPanelUnload.unit_index)
  return _internal_unit_index();
}
inline void ActionCargoPanelUnload::_internal_set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000001u;
  unit_index_ = value;
}
inline void ActionCargoPanelUnload::set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_unit_index(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionCargoPanelUnload.unit_index)
}

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

// ActionProductionPanelRemoveFromQueue

// optional int32 unit_index = 1;
inline bool ActionProductionPanelRemoveFromQueue::_internal_has_unit_index() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ActionProductionPanelRemoveFromQueue::has_unit_index() const {
  return _internal_has_unit_index();
}
inline void ActionProductionPanelRemoveFromQueue::clear_unit_index() {
  unit_index_ = 0;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 ActionProductionPanelRemoveFromQueue::_internal_unit_index() const {
  return unit_index_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 ActionProductionPanelRemoveFromQueue::unit_index() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionProductionPanelRemoveFromQueue.unit_index)
  return _internal_unit_index();
}
inline void ActionProductionPanelRemoveFromQueue::_internal_set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000001u;
  unit_index_ = value;
}
inline void ActionProductionPanelRemoveFromQueue::set_unit_index(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_unit_index(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionProductionPanelRemoveFromQueue.unit_index)
}

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

// ActionToggleAutocast

// optional int32 ability_id = 1;
inline bool ActionToggleAutocast::_internal_has_ability_id() const {
  bool value = (_has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool ActionToggleAutocast::has_ability_id() const {
  return _internal_has_ability_id();
}
inline void ActionToggleAutocast::clear_ability_id() {
  ability_id_ = 0;
  _has_bits_[0] &= ~0x00000001u;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 ActionToggleAutocast::_internal_ability_id() const {
  return ability_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 ActionToggleAutocast::ability_id() const {
  // @@protoc_insertion_point(field_get:SC2APIProtocol.ActionToggleAutocast.ability_id)
  return _internal_ability_id();
}
inline void ActionToggleAutocast::_internal_set_ability_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _has_bits_[0] |= 0x00000001u;
  ability_id_ = value;
}
inline void ActionToggleAutocast::set_ability_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_ability_id(value);
  // @@protoc_insertion_point(field_set:SC2APIProtocol.ActionToggleAutocast.ability_id)
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace SC2APIProtocol

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::SC2APIProtocol::ActionControlGroup_ControlGroupAction> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::SC2APIProtocol::ActionControlGroup_ControlGroupAction>() {
  return ::SC2APIProtocol::ActionControlGroup_ControlGroupAction_descriptor();
}
template <> struct is_proto_enum< ::SC2APIProtocol::ActionSelectIdleWorker_Type> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::SC2APIProtocol::ActionSelectIdleWorker_Type>() {
  return ::SC2APIProtocol::ActionSelectIdleWorker_Type_descriptor();
}
template <> struct is_proto_enum< ::SC2APIProtocol::ActionMultiPanel_Type> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::SC2APIProtocol::ActionMultiPanel_Type>() {
  return ::SC2APIProtocol::ActionMultiPanel_Type_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

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