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

#include "s2clientprotocol/ui.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionCargoPanelUnload_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionControlGroup_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionMultiPanel_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionProductionPanelRemoveFromQueue_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionSelectArmy_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionSelectIdleWorker_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionSelectLarva_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionSelectWarpGates_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionToggleAutocast_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_BuildItem_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_CargoPanel_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlGroup_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_MultiPanel_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_ProductionPanel_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SinglePanel_s2clientprotocol_2fui_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fui_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_UnitInfo_s2clientprotocol_2fui_2eproto;
namespace SC2APIProtocol {
class ObservationUIDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ObservationUI> _instance;
  const ::SC2APIProtocol::SinglePanel* single_;
  const ::SC2APIProtocol::MultiPanel* multi_;
  const ::SC2APIProtocol::CargoPanel* cargo_;
  const ::SC2APIProtocol::ProductionPanel* production_;
} _ObservationUI_default_instance_;
class ControlGroupDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ControlGroup> _instance;
} _ControlGroup_default_instance_;
class UnitInfoDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<UnitInfo> _instance;
} _UnitInfo_default_instance_;
class SinglePanelDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SinglePanel> _instance;
} _SinglePanel_default_instance_;
class MultiPanelDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<MultiPanel> _instance;
} _MultiPanel_default_instance_;
class CargoPanelDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<CargoPanel> _instance;
} _CargoPanel_default_instance_;
class BuildItemDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<BuildItem> _instance;
} _BuildItem_default_instance_;
class ProductionPanelDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ProductionPanel> _instance;
} _ProductionPanel_default_instance_;
class ActionUIDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionUI> _instance;
  const ::SC2APIProtocol::ActionControlGroup* control_group_;
  const ::SC2APIProtocol::ActionSelectArmy* select_army_;
  const ::SC2APIProtocol::ActionSelectWarpGates* select_warp_gates_;
  const ::SC2APIProtocol::ActionSelectLarva* select_larva_;
  const ::SC2APIProtocol::ActionSelectIdleWorker* select_idle_worker_;
  const ::SC2APIProtocol::ActionMultiPanel* multi_panel_;
  const ::SC2APIProtocol::ActionCargoPanelUnload* cargo_panel_;
  const ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* production_panel_;
  const ::SC2APIProtocol::ActionToggleAutocast* toggle_autocast_;
} _ActionUI_default_instance_;
class ActionControlGroupDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionControlGroup> _instance;
} _ActionControlGroup_default_instance_;
class ActionSelectArmyDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionSelectArmy> _instance;
} _ActionSelectArmy_default_instance_;
class ActionSelectWarpGatesDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionSelectWarpGates> _instance;
} _ActionSelectWarpGates_default_instance_;
class ActionSelectLarvaDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionSelectLarva> _instance;
} _ActionSelectLarva_default_instance_;
class ActionSelectIdleWorkerDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionSelectIdleWorker> _instance;
} _ActionSelectIdleWorker_default_instance_;
class ActionMultiPanelDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionMultiPanel> _instance;
} _ActionMultiPanel_default_instance_;
class ActionCargoPanelUnloadDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionCargoPanelUnload> _instance;
} _ActionCargoPanelUnload_default_instance_;
class ActionProductionPanelRemoveFromQueueDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionProductionPanelRemoveFromQueue> _instance;
} _ActionProductionPanelRemoveFromQueue_default_instance_;
class ActionToggleAutocastDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ActionToggleAutocast> _instance;
} _ActionToggleAutocast_default_instance_;
}  // namespace SC2APIProtocol
static void InitDefaultsscc_info_ActionCargoPanelUnload_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionCargoPanelUnload_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionCargoPanelUnload();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionCargoPanelUnload::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionCargoPanelUnload_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ActionCargoPanelUnload_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_ActionControlGroup_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionControlGroup_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionControlGroup();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionControlGroup::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionControlGroup_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ActionControlGroup_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_ActionMultiPanel_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionMultiPanel_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionMultiPanel();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionMultiPanel::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionMultiPanel_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ActionMultiPanel_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_ActionProductionPanelRemoveFromQueue_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionProductionPanelRemoveFromQueue_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionProductionPanelRemoveFromQueue_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ActionProductionPanelRemoveFromQueue_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_ActionSelectArmy_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionSelectArmy_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionSelectArmy();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionSelectArmy::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionSelectArmy_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ActionSelectArmy_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_ActionSelectIdleWorker_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionSelectIdleWorker_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionSelectIdleWorker();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionSelectIdleWorker::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionSelectIdleWorker_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ActionSelectIdleWorker_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_ActionSelectLarva_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionSelectLarva_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionSelectLarva();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionSelectLarva::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionSelectLarva_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ActionSelectLarva_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_ActionSelectWarpGates_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionSelectWarpGates_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionSelectWarpGates();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionSelectWarpGates::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionSelectWarpGates_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ActionSelectWarpGates_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_ActionToggleAutocast_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionToggleAutocast_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionToggleAutocast();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionToggleAutocast::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ActionToggleAutocast_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ActionToggleAutocast_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_ActionUI_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ActionUI_default_instance_;
    new (ptr) ::SC2APIProtocol::ActionUI();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ActionUI::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<9> scc_info_ActionUI_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 9, 0, InitDefaultsscc_info_ActionUI_s2clientprotocol_2fui_2eproto}, {
      &scc_info_ActionControlGroup_s2clientprotocol_2fui_2eproto.base,
      &scc_info_ActionSelectArmy_s2clientprotocol_2fui_2eproto.base,
      &scc_info_ActionSelectWarpGates_s2clientprotocol_2fui_2eproto.base,
      &scc_info_ActionSelectLarva_s2clientprotocol_2fui_2eproto.base,
      &scc_info_ActionSelectIdleWorker_s2clientprotocol_2fui_2eproto.base,
      &scc_info_ActionMultiPanel_s2clientprotocol_2fui_2eproto.base,
      &scc_info_ActionCargoPanelUnload_s2clientprotocol_2fui_2eproto.base,
      &scc_info_ActionProductionPanelRemoveFromQueue_s2clientprotocol_2fui_2eproto.base,
      &scc_info_ActionToggleAutocast_s2clientprotocol_2fui_2eproto.base,}};

static void InitDefaultsscc_info_BuildItem_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_BuildItem_default_instance_;
    new (ptr) ::SC2APIProtocol::BuildItem();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::BuildItem::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_BuildItem_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_BuildItem_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_CargoPanel_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_CargoPanel_default_instance_;
    new (ptr) ::SC2APIProtocol::CargoPanel();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::CargoPanel::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_CargoPanel_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_CargoPanel_s2clientprotocol_2fui_2eproto}, {
      &scc_info_UnitInfo_s2clientprotocol_2fui_2eproto.base,}};

static void InitDefaultsscc_info_ControlGroup_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ControlGroup_default_instance_;
    new (ptr) ::SC2APIProtocol::ControlGroup();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ControlGroup::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ControlGroup_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_ControlGroup_s2clientprotocol_2fui_2eproto}, {}};

static void InitDefaultsscc_info_MultiPanel_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_MultiPanel_default_instance_;
    new (ptr) ::SC2APIProtocol::MultiPanel();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::MultiPanel::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_MultiPanel_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_MultiPanel_s2clientprotocol_2fui_2eproto}, {
      &scc_info_UnitInfo_s2clientprotocol_2fui_2eproto.base,}};

static void InitDefaultsscc_info_ObservationUI_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ObservationUI_default_instance_;
    new (ptr) ::SC2APIProtocol::ObservationUI();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ObservationUI::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<5> scc_info_ObservationUI_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 5, 0, InitDefaultsscc_info_ObservationUI_s2clientprotocol_2fui_2eproto}, {
      &scc_info_ControlGroup_s2clientprotocol_2fui_2eproto.base,
      &scc_info_SinglePanel_s2clientprotocol_2fui_2eproto.base,
      &scc_info_MultiPanel_s2clientprotocol_2fui_2eproto.base,
      &scc_info_CargoPanel_s2clientprotocol_2fui_2eproto.base,
      &scc_info_ProductionPanel_s2clientprotocol_2fui_2eproto.base,}};

static void InitDefaultsscc_info_ProductionPanel_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ProductionPanel_default_instance_;
    new (ptr) ::SC2APIProtocol::ProductionPanel();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ProductionPanel::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_ProductionPanel_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 2, 0, InitDefaultsscc_info_ProductionPanel_s2clientprotocol_2fui_2eproto}, {
      &scc_info_UnitInfo_s2clientprotocol_2fui_2eproto.base,
      &scc_info_BuildItem_s2clientprotocol_2fui_2eproto.base,}};

static void InitDefaultsscc_info_SinglePanel_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_SinglePanel_default_instance_;
    new (ptr) ::SC2APIProtocol::SinglePanel();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::SinglePanel::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SinglePanel_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_SinglePanel_s2clientprotocol_2fui_2eproto}, {
      &scc_info_UnitInfo_s2clientprotocol_2fui_2eproto.base,}};

static void InitDefaultsscc_info_UnitInfo_s2clientprotocol_2fui_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_UnitInfo_default_instance_;
    new (ptr) ::SC2APIProtocol::UnitInfo();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::UnitInfo::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_UnitInfo_s2clientprotocol_2fui_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_UnitInfo_s2clientprotocol_2fui_2eproto}, {}};

static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_s2clientprotocol_2fui_2eproto[18];
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_s2clientprotocol_2fui_2eproto[3];
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_s2clientprotocol_2fui_2eproto = nullptr;

const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_s2clientprotocol_2fui_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ObservationUI, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ObservationUI, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ObservationUI, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ObservationUI, groups_),
  offsetof(::SC2APIProtocol::ObservationUIDefaultTypeInternal, single_),
  offsetof(::SC2APIProtocol::ObservationUIDefaultTypeInternal, multi_),
  offsetof(::SC2APIProtocol::ObservationUIDefaultTypeInternal, cargo_),
  offsetof(::SC2APIProtocol::ObservationUIDefaultTypeInternal, production_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ObservationUI, panel_),
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ControlGroup, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ControlGroup, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ControlGroup, control_group_index_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ControlGroup, leader_unit_type_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ControlGroup, count_),
  0,
  1,
  2,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, unit_type_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, player_relative_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, health_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, shields_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, energy_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, transport_slots_taken_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, build_progress_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, add_on_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, max_health_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, max_shields_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::UnitInfo, max_energy_),
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  0,
  8,
  9,
  10,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::SinglePanel, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::SinglePanel, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::SinglePanel, unit_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::SinglePanel, attack_upgrade_level_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::SinglePanel, armor_upgrade_level_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::SinglePanel, shield_upgrade_level_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::SinglePanel, buffs_),
  0,
  1,
  2,
  3,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::MultiPanel, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::MultiPanel, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::MultiPanel, units_),
  ~0u,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CargoPanel, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CargoPanel, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CargoPanel, unit_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CargoPanel, passengers_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CargoPanel, slots_available_),
  0,
  ~0u,
  1,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::BuildItem, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::BuildItem, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::BuildItem, ability_id_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::BuildItem, build_progress_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ProductionPanel, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ProductionPanel, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ProductionPanel, unit_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ProductionPanel, build_queue_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ProductionPanel, production_queue_),
  0,
  ~0u,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionUI, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionUI, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionUI, _oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  offsetof(::SC2APIProtocol::ActionUIDefaultTypeInternal, control_group_),
  offsetof(::SC2APIProtocol::ActionUIDefaultTypeInternal, select_army_),
  offsetof(::SC2APIProtocol::ActionUIDefaultTypeInternal, select_warp_gates_),
  offsetof(::SC2APIProtocol::ActionUIDefaultTypeInternal, select_larva_),
  offsetof(::SC2APIProtocol::ActionUIDefaultTypeInternal, select_idle_worker_),
  offsetof(::SC2APIProtocol::ActionUIDefaultTypeInternal, multi_panel_),
  offsetof(::SC2APIProtocol::ActionUIDefaultTypeInternal, cargo_panel_),
  offsetof(::SC2APIProtocol::ActionUIDefaultTypeInternal, production_panel_),
  offsetof(::SC2APIProtocol::ActionUIDefaultTypeInternal, toggle_autocast_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionUI, action_),
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionControlGroup, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionControlGroup, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionControlGroup, action_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionControlGroup, control_group_index_),
  1,
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectArmy, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectArmy, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectArmy, selection_add_),
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectWarpGates, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectWarpGates, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectWarpGates, selection_add_),
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectLarva, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectLarva, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectIdleWorker, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectIdleWorker, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionSelectIdleWorker, type_),
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionMultiPanel, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionMultiPanel, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionMultiPanel, type_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionMultiPanel, unit_index_),
  1,
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionCargoPanelUnload, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionCargoPanelUnload, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionCargoPanelUnload, unit_index_),
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionProductionPanelRemoveFromQueue, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionProductionPanelRemoveFromQueue, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionProductionPanelRemoveFromQueue, unit_index_),
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionToggleAutocast, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionToggleAutocast, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ActionToggleAutocast, ability_id_),
  0,
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 11, sizeof(::SC2APIProtocol::ObservationUI)},
  { 16, 24, sizeof(::SC2APIProtocol::ControlGroup)},
  { 27, 43, sizeof(::SC2APIProtocol::UnitInfo)},
  { 54, 64, sizeof(::SC2APIProtocol::SinglePanel)},
  { 69, 75, sizeof(::SC2APIProtocol::MultiPanel)},
  { 76, 84, sizeof(::SC2APIProtocol::CargoPanel)},
  { 87, 94, sizeof(::SC2APIProtocol::BuildItem)},
  { 96, 104, sizeof(::SC2APIProtocol::ProductionPanel)},
  { 107, 122, sizeof(::SC2APIProtocol::ActionUI)},
  { 131, 138, sizeof(::SC2APIProtocol::ActionControlGroup)},
  { 140, 146, sizeof(::SC2APIProtocol::ActionSelectArmy)},
  { 147, 153, sizeof(::SC2APIProtocol::ActionSelectWarpGates)},
  { 154, 159, sizeof(::SC2APIProtocol::ActionSelectLarva)},
  { 159, 165, sizeof(::SC2APIProtocol::ActionSelectIdleWorker)},
  { 166, 173, sizeof(::SC2APIProtocol::ActionMultiPanel)},
  { 175, 181, sizeof(::SC2APIProtocol::ActionCargoPanelUnload)},
  { 182, 188, sizeof(::SC2APIProtocol::ActionProductionPanelRemoveFromQueue)},
  { 189, 195, sizeof(::SC2APIProtocol::ActionToggleAutocast)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ObservationUI_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ControlGroup_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_UnitInfo_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_SinglePanel_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_MultiPanel_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_CargoPanel_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_BuildItem_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ProductionPanel_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionUI_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionControlGroup_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionSelectArmy_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionSelectWarpGates_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionSelectLarva_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionSelectIdleWorker_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionMultiPanel_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionCargoPanelUnload_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionProductionPanelRemoveFromQueue_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ActionToggleAutocast_default_instance_),
};

const char descriptor_table_protodef_s2clientprotocol_2fui_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\031s2clientprotocol/ui.proto\022\016SC2APIProto"
  "col\"\206\002\n\rObservationUI\022,\n\006groups\030\001 \003(\0132\034."
  "SC2APIProtocol.ControlGroup\022-\n\006single\030\002 "
  "\001(\0132\033.SC2APIProtocol.SinglePanelH\000\022+\n\005mu"
  "lti\030\003 \001(\0132\032.SC2APIProtocol.MultiPanelH\000\022"
  "+\n\005cargo\030\004 \001(\0132\032.SC2APIProtocol.CargoPan"
  "elH\000\0225\n\nproduction\030\005 \001(\0132\037.SC2APIProtoco"
  "l.ProductionPanelH\000B\007\n\005panel\"T\n\014ControlG"
  "roup\022\033\n\023control_group_index\030\001 \001(\r\022\030\n\020lea"
  "der_unit_type\030\002 \001(\r\022\r\n\005count\030\003 \001(\r\"\205\002\n\010U"
  "nitInfo\022\021\n\tunit_type\030\001 \001(\r\022\027\n\017player_rel"
  "ative\030\002 \001(\r\022\016\n\006health\030\003 \001(\005\022\017\n\007shields\030\004"
  " \001(\005\022\016\n\006energy\030\005 \001(\005\022\035\n\025transport_slots_"
  "taken\030\006 \001(\005\022\026\n\016build_progress\030\007 \001(\002\022(\n\006a"
  "dd_on\030\010 \001(\0132\030.SC2APIProtocol.UnitInfo\022\022\n"
  "\nmax_health\030\t \001(\005\022\023\n\013max_shields\030\n \001(\005\022\022"
  "\n\nmax_energy\030\013 \001(\005\"\235\001\n\013SinglePanel\022&\n\004un"
  "it\030\001 \001(\0132\030.SC2APIProtocol.UnitInfo\022\034\n\024at"
  "tack_upgrade_level\030\002 \001(\005\022\033\n\023armor_upgrad"
  "e_level\030\003 \001(\005\022\034\n\024shield_upgrade_level\030\004 "
  "\001(\005\022\r\n\005buffs\030\005 \003(\005\"5\n\nMultiPanel\022\'\n\005unit"
  "s\030\001 \003(\0132\030.SC2APIProtocol.UnitInfo\"{\n\nCar"
  "goPanel\022&\n\004unit\030\001 \001(\0132\030.SC2APIProtocol.U"
  "nitInfo\022,\n\npassengers\030\002 \003(\0132\030.SC2APIProt"
  "ocol.UnitInfo\022\027\n\017slots_available\030\003 \001(\005\"7"
  "\n\tBuildItem\022\022\n\nability_id\030\001 \001(\r\022\026\n\016build"
  "_progress\030\002 \001(\002\"\235\001\n\017ProductionPanel\022&\n\004u"
  "nit\030\001 \001(\0132\030.SC2APIProtocol.UnitInfo\022-\n\013b"
  "uild_queue\030\002 \003(\0132\030.SC2APIProtocol.UnitIn"
  "fo\0223\n\020production_queue\030\003 \003(\0132\031.SC2APIPro"
  "tocol.BuildItem\"\332\004\n\010ActionUI\022;\n\rcontrol_"
  "group\030\001 \001(\0132\".SC2APIProtocol.ActionContr"
  "olGroupH\000\0227\n\013select_army\030\002 \001(\0132 .SC2APIP"
  "rotocol.ActionSelectArmyH\000\022B\n\021select_war"
  "p_gates\030\003 \001(\0132%.SC2APIProtocol.ActionSel"
  "ectWarpGatesH\000\0229\n\014select_larva\030\004 \001(\0132!.S"
  "C2APIProtocol.ActionSelectLarvaH\000\022D\n\022sel"
  "ect_idle_worker\030\005 \001(\0132&.SC2APIProtocol.A"
  "ctionSelectIdleWorkerH\000\0227\n\013multi_panel\030\006"
  " \001(\0132 .SC2APIProtocol.ActionMultiPanelH\000"
  "\022=\n\013cargo_panel\030\007 \001(\0132&.SC2APIProtocol.A"
  "ctionCargoPanelUnloadH\000\022P\n\020production_pa"
  "nel\030\010 \001(\01324.SC2APIProtocol.ActionProduct"
  "ionPanelRemoveFromQueueH\000\022\?\n\017toggle_auto"
  "cast\030\t \001(\0132$.SC2APIProtocol.ActionToggle"
  "AutocastH\000B\010\n\006action\"\324\001\n\022ActionControlGr"
  "oup\022E\n\006action\030\001 \001(\01625.SC2APIProtocol.Act"
  "ionControlGroup.ControlGroupAction\022\033\n\023co"
  "ntrol_group_index\030\002 \001(\r\"Z\n\022ControlGroupA"
  "ction\022\n\n\006Recall\020\001\022\007\n\003Set\020\002\022\n\n\006Append\020\003\022\017"
  "\n\013SetAndSteal\020\004\022\022\n\016AppendAndSteal\020\005\")\n\020A"
  "ctionSelectArmy\022\025\n\rselection_add\030\001 \001(\010\"."
  "\n\025ActionSelectWarpGates\022\025\n\rselection_add"
  "\030\001 \001(\010\"\023\n\021ActionSelectLarva\"\202\001\n\026ActionSe"
  "lectIdleWorker\0229\n\004type\030\001 \001(\0162+.SC2APIPro"
  "tocol.ActionSelectIdleWorker.Type\"-\n\004Typ"
  "e\022\007\n\003Set\020\001\022\007\n\003Add\020\002\022\007\n\003All\020\003\022\n\n\006AddAll\020\004"
  "\"\263\001\n\020ActionMultiPanel\0223\n\004type\030\001 \001(\0162%.SC"
  "2APIProtocol.ActionMultiPanel.Type\022\022\n\nun"
  "it_index\030\002 \001(\005\"V\n\004Type\022\020\n\014SingleSelect\020\001"
  "\022\020\n\014DeselectUnit\020\002\022\023\n\017SelectAllOfType\020\003\022"
  "\025\n\021DeselectAllOfType\020\004\",\n\026ActionCargoPan"
  "elUnload\022\022\n\nunit_index\030\001 \001(\005\":\n$ActionPr"
  "oductionPanelRemoveFromQueue\022\022\n\nunit_ind"
  "ex\030\001 \001(\005\"*\n\024ActionToggleAutocast\022\022\n\nabil"
  "ity_id\030\001 \001(\005"
  ;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_s2clientprotocol_2fui_2eproto_deps[1] = {
};
static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_s2clientprotocol_2fui_2eproto_sccs[18] = {
  &scc_info_ActionCargoPanelUnload_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ActionControlGroup_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ActionMultiPanel_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ActionProductionPanelRemoveFromQueue_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ActionSelectArmy_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ActionSelectIdleWorker_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ActionSelectLarva_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ActionSelectWarpGates_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ActionToggleAutocast_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ActionUI_s2clientprotocol_2fui_2eproto.base,
  &scc_info_BuildItem_s2clientprotocol_2fui_2eproto.base,
  &scc_info_CargoPanel_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ControlGroup_s2clientprotocol_2fui_2eproto.base,
  &scc_info_MultiPanel_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ObservationUI_s2clientprotocol_2fui_2eproto.base,
  &scc_info_ProductionPanel_s2clientprotocol_2fui_2eproto.base,
  &scc_info_SinglePanel_s2clientprotocol_2fui_2eproto.base,
  &scc_info_UnitInfo_s2clientprotocol_2fui_2eproto.base,
};
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_s2clientprotocol_2fui_2eproto_once;
static bool descriptor_table_s2clientprotocol_2fui_2eproto_initialized = false;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_s2clientprotocol_2fui_2eproto = {
  &descriptor_table_s2clientprotocol_2fui_2eproto_initialized, descriptor_table_protodef_s2clientprotocol_2fui_2eproto, "s2clientprotocol/ui.proto", 2612,
  &descriptor_table_s2clientprotocol_2fui_2eproto_once, descriptor_table_s2clientprotocol_2fui_2eproto_sccs, descriptor_table_s2clientprotocol_2fui_2eproto_deps, 18, 0,
  schemas, file_default_instances, TableStruct_s2clientprotocol_2fui_2eproto::offsets,
  file_level_metadata_s2clientprotocol_2fui_2eproto, 18, file_level_enum_descriptors_s2clientprotocol_2fui_2eproto, file_level_service_descriptors_s2clientprotocol_2fui_2eproto,
};

// Force running AddDescriptors() at dynamic initialization time.
static bool dynamic_init_dummy_s2clientprotocol_2fui_2eproto = (static_cast<void>(::PROTOBUF_NAMESPACE_ID::internal::AddDescriptors(&descriptor_table_s2clientprotocol_2fui_2eproto)), true);
namespace SC2APIProtocol {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ActionControlGroup_ControlGroupAction_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_s2clientprotocol_2fui_2eproto);
  return file_level_enum_descriptors_s2clientprotocol_2fui_2eproto[0];
}
bool ActionControlGroup_ControlGroupAction_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr ActionControlGroup_ControlGroupAction ActionControlGroup::Recall;
constexpr ActionControlGroup_ControlGroupAction ActionControlGroup::Set;
constexpr ActionControlGroup_ControlGroupAction ActionControlGroup::Append;
constexpr ActionControlGroup_ControlGroupAction ActionControlGroup::SetAndSteal;
constexpr ActionControlGroup_ControlGroupAction ActionControlGroup::AppendAndSteal;
constexpr ActionControlGroup_ControlGroupAction ActionControlGroup::ControlGroupAction_MIN;
constexpr ActionControlGroup_ControlGroupAction ActionControlGroup::ControlGroupAction_MAX;
constexpr int ActionControlGroup::ControlGroupAction_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ActionSelectIdleWorker_Type_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_s2clientprotocol_2fui_2eproto);
  return file_level_enum_descriptors_s2clientprotocol_2fui_2eproto[1];
}
bool ActionSelectIdleWorker_Type_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr ActionSelectIdleWorker_Type ActionSelectIdleWorker::Set;
constexpr ActionSelectIdleWorker_Type ActionSelectIdleWorker::Add;
constexpr ActionSelectIdleWorker_Type ActionSelectIdleWorker::All;
constexpr ActionSelectIdleWorker_Type ActionSelectIdleWorker::AddAll;
constexpr ActionSelectIdleWorker_Type ActionSelectIdleWorker::Type_MIN;
constexpr ActionSelectIdleWorker_Type ActionSelectIdleWorker::Type_MAX;
constexpr int ActionSelectIdleWorker::Type_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ActionMultiPanel_Type_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_s2clientprotocol_2fui_2eproto);
  return file_level_enum_descriptors_s2clientprotocol_2fui_2eproto[2];
}
bool ActionMultiPanel_Type_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr ActionMultiPanel_Type ActionMultiPanel::SingleSelect;
constexpr ActionMultiPanel_Type ActionMultiPanel::DeselectUnit;
constexpr ActionMultiPanel_Type ActionMultiPanel::SelectAllOfType;
constexpr ActionMultiPanel_Type ActionMultiPanel::DeselectAllOfType;
constexpr ActionMultiPanel_Type ActionMultiPanel::Type_MIN;
constexpr ActionMultiPanel_Type ActionMultiPanel::Type_MAX;
constexpr int ActionMultiPanel::Type_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)

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

void ObservationUI::InitAsDefaultInstance() {
  ::SC2APIProtocol::_ObservationUI_default_instance_.single_ = const_cast< ::SC2APIProtocol::SinglePanel*>(
      ::SC2APIProtocol::SinglePanel::internal_default_instance());
  ::SC2APIProtocol::_ObservationUI_default_instance_.multi_ = const_cast< ::SC2APIProtocol::MultiPanel*>(
      ::SC2APIProtocol::MultiPanel::internal_default_instance());
  ::SC2APIProtocol::_ObservationUI_default_instance_.cargo_ = const_cast< ::SC2APIProtocol::CargoPanel*>(
      ::SC2APIProtocol::CargoPanel::internal_default_instance());
  ::SC2APIProtocol::_ObservationUI_default_instance_.production_ = const_cast< ::SC2APIProtocol::ProductionPanel*>(
      ::SC2APIProtocol::ProductionPanel::internal_default_instance());
}
class ObservationUI::_Internal {
 public:
  using HasBits = decltype(std::declval<ObservationUI>()._has_bits_);
  static const ::SC2APIProtocol::SinglePanel& single(const ObservationUI* msg);
  static const ::SC2APIProtocol::MultiPanel& multi(const ObservationUI* msg);
  static const ::SC2APIProtocol::CargoPanel& cargo(const ObservationUI* msg);
  static const ::SC2APIProtocol::ProductionPanel& production(const ObservationUI* msg);
};

const ::SC2APIProtocol::SinglePanel&
ObservationUI::_Internal::single(const ObservationUI* msg) {
  return *msg->panel_.single_;
}
const ::SC2APIProtocol::MultiPanel&
ObservationUI::_Internal::multi(const ObservationUI* msg) {
  return *msg->panel_.multi_;
}
const ::SC2APIProtocol::CargoPanel&
ObservationUI::_Internal::cargo(const ObservationUI* msg) {
  return *msg->panel_.cargo_;
}
const ::SC2APIProtocol::ProductionPanel&
ObservationUI::_Internal::production(const ObservationUI* msg) {
  return *msg->panel_.production_;
}
void ObservationUI::set_allocated_single(::SC2APIProtocol::SinglePanel* single) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_panel();
  if (single) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      single = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, single, submessage_arena);
    }
    set_has_single();
    panel_.single_ = single;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ObservationUI.single)
}
void ObservationUI::set_allocated_multi(::SC2APIProtocol::MultiPanel* multi) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_panel();
  if (multi) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      multi = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, multi, submessage_arena);
    }
    set_has_multi();
    panel_.multi_ = multi;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ObservationUI.multi)
}
void ObservationUI::set_allocated_cargo(::SC2APIProtocol::CargoPanel* cargo) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_panel();
  if (cargo) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      cargo = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, cargo, submessage_arena);
    }
    set_has_cargo();
    panel_.cargo_ = cargo;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ObservationUI.cargo)
}
void ObservationUI::set_allocated_production(::SC2APIProtocol::ProductionPanel* production) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_panel();
  if (production) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      production = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, production, submessage_arena);
    }
    set_has_production();
    panel_.production_ = production;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ObservationUI.production)
}
ObservationUI::ObservationUI()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ObservationUI)
}
ObservationUI::ObservationUI(const ObservationUI& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      groups_(from.groups_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  clear_has_panel();
  switch (from.panel_case()) {
    case kSingle: {
      _internal_mutable_single()->::SC2APIProtocol::SinglePanel::MergeFrom(from._internal_single());
      break;
    }
    case kMulti: {
      _internal_mutable_multi()->::SC2APIProtocol::MultiPanel::MergeFrom(from._internal_multi());
      break;
    }
    case kCargo: {
      _internal_mutable_cargo()->::SC2APIProtocol::CargoPanel::MergeFrom(from._internal_cargo());
      break;
    }
    case kProduction: {
      _internal_mutable_production()->::SC2APIProtocol::ProductionPanel::MergeFrom(from._internal_production());
      break;
    }
    case PANEL_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ObservationUI)
}

void ObservationUI::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ObservationUI_s2clientprotocol_2fui_2eproto.base);
  clear_has_panel();
}

ObservationUI::~ObservationUI() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ObservationUI)
  SharedDtor();
}

void ObservationUI::SharedDtor() {
  if (has_panel()) {
    clear_panel();
  }
}

void ObservationUI::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ObservationUI& ObservationUI::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ObservationUI_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ObservationUI::clear_panel() {
// @@protoc_insertion_point(one_of_clear_start:SC2APIProtocol.ObservationUI)
  switch (panel_case()) {
    case kSingle: {
      delete panel_.single_;
      break;
    }
    case kMulti: {
      delete panel_.multi_;
      break;
    }
    case kCargo: {
      delete panel_.cargo_;
      break;
    }
    case kProduction: {
      delete panel_.production_;
      break;
    }
    case PANEL_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = PANEL_NOT_SET;
}


void ObservationUI::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ObservationUI)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  groups_.Clear();
  clear_panel();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ObservationUI::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // repeated .SC2APIProtocol.ControlGroup groups = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_groups(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.SinglePanel single = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_single(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.MultiPanel multi = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_multi(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CargoPanel cargo = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_cargo(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ProductionPanel production = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_production(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ObservationUI::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ObservationUI)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .SC2APIProtocol.ControlGroup groups = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_groups_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_groups(i), target, stream);
  }

  switch (panel_case()) {
    case kSingle: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          2, _Internal::single(this), target, stream);
      break;
    }
    case kMulti: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          3, _Internal::multi(this), target, stream);
      break;
    }
    case kCargo: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          4, _Internal::cargo(this), target, stream);
      break;
    }
    case kProduction: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          5, _Internal::production(this), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ObservationUI)
  return target;
}

size_t ObservationUI::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ObservationUI)
  size_t total_size = 0;

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

  // repeated .SC2APIProtocol.ControlGroup groups = 1;
  total_size += 1UL * this->_internal_groups_size();
  for (const auto& msg : this->groups_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  switch (panel_case()) {
    // optional .SC2APIProtocol.SinglePanel single = 2;
    case kSingle: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *panel_.single_);
      break;
    }
    // optional .SC2APIProtocol.MultiPanel multi = 3;
    case kMulti: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *panel_.multi_);
      break;
    }
    // optional .SC2APIProtocol.CargoPanel cargo = 4;
    case kCargo: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *panel_.cargo_);
      break;
    }
    // optional .SC2APIProtocol.ProductionPanel production = 5;
    case kProduction: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *panel_.production_);
      break;
    }
    case PANEL_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ObservationUI::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ObservationUI)
  GOOGLE_DCHECK_NE(&from, this);
  const ObservationUI* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ObservationUI>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ObservationUI)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ObservationUI)
    MergeFrom(*source);
  }
}

void ObservationUI::MergeFrom(const ObservationUI& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ObservationUI)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  groups_.MergeFrom(from.groups_);
  switch (from.panel_case()) {
    case kSingle: {
      _internal_mutable_single()->::SC2APIProtocol::SinglePanel::MergeFrom(from._internal_single());
      break;
    }
    case kMulti: {
      _internal_mutable_multi()->::SC2APIProtocol::MultiPanel::MergeFrom(from._internal_multi());
      break;
    }
    case kCargo: {
      _internal_mutable_cargo()->::SC2APIProtocol::CargoPanel::MergeFrom(from._internal_cargo());
      break;
    }
    case kProduction: {
      _internal_mutable_production()->::SC2APIProtocol::ProductionPanel::MergeFrom(from._internal_production());
      break;
    }
    case PANEL_NOT_SET: {
      break;
    }
  }
}

void ObservationUI::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ObservationUI)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ObservationUI::InternalSwap(ObservationUI* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  groups_.InternalSwap(&other->groups_);
  swap(panel_, other->panel_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata ObservationUI::GetMetadata() const {
  return GetMetadataStatic();
}


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

void ControlGroup::InitAsDefaultInstance() {
}
class ControlGroup::_Internal {
 public:
  using HasBits = decltype(std::declval<ControlGroup>()._has_bits_);
  static void set_has_control_group_index(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_leader_unit_type(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_count(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

ControlGroup::ControlGroup()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ControlGroup)
}
ControlGroup::ControlGroup(const ControlGroup& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&control_group_index_, &from.control_group_index_,
    static_cast<size_t>(reinterpret_cast<char*>(&count_) -
    reinterpret_cast<char*>(&control_group_index_)) + sizeof(count_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ControlGroup)
}

void ControlGroup::SharedCtor() {
  ::memset(&control_group_index_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&count_) -
      reinterpret_cast<char*>(&control_group_index_)) + sizeof(count_));
}

ControlGroup::~ControlGroup() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ControlGroup)
  SharedDtor();
}

void ControlGroup::SharedDtor() {
}

void ControlGroup::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ControlGroup& ControlGroup::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ControlGroup_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ControlGroup::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ControlGroup)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    ::memset(&control_group_index_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&count_) -
        reinterpret_cast<char*>(&control_group_index_)) + sizeof(count_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ControlGroup::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional uint32 control_group_index = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_control_group_index(&has_bits);
          control_group_index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 leader_unit_type = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_leader_unit_type(&has_bits);
          leader_unit_type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 count = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_count(&has_bits);
          count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ControlGroup::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ControlGroup)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional uint32 control_group_index = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_control_group_index(), target);
  }

  // optional uint32 leader_unit_type = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_leader_unit_type(), target);
  }

  // optional uint32 count = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(3, this->_internal_count(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ControlGroup)
  return target;
}

size_t ControlGroup::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ControlGroup)
  size_t total_size = 0;

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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional uint32 control_group_index = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_control_group_index());
    }

    // optional uint32 leader_unit_type = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_leader_unit_type());
    }

    // optional uint32 count = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_count());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ControlGroup::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ControlGroup)
  GOOGLE_DCHECK_NE(&from, this);
  const ControlGroup* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ControlGroup>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ControlGroup)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ControlGroup)
    MergeFrom(*source);
  }
}

void ControlGroup::MergeFrom(const ControlGroup& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ControlGroup)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      control_group_index_ = from.control_group_index_;
    }
    if (cached_has_bits & 0x00000002u) {
      leader_unit_type_ = from.leader_unit_type_;
    }
    if (cached_has_bits & 0x00000004u) {
      count_ = from.count_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void ControlGroup::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ControlGroup)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ControlGroup::InternalSwap(ControlGroup* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(control_group_index_, other->control_group_index_);
  swap(leader_unit_type_, other->leader_unit_type_);
  swap(count_, other->count_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ControlGroup::GetMetadata() const {
  return GetMetadataStatic();
}


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

void UnitInfo::InitAsDefaultInstance() {
  ::SC2APIProtocol::_UnitInfo_default_instance_._instance.get_mutable()->add_on_ = const_cast< ::SC2APIProtocol::UnitInfo*>(
      ::SC2APIProtocol::UnitInfo::internal_default_instance());
}
class UnitInfo::_Internal {
 public:
  using HasBits = decltype(std::declval<UnitInfo>()._has_bits_);
  static void set_has_unit_type(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_player_relative(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_health(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_shields(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_energy(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_transport_slots_taken(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_build_progress(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static const ::SC2APIProtocol::UnitInfo& add_on(const UnitInfo* msg);
  static void set_has_add_on(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_max_health(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_max_shields(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_max_energy(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
};

const ::SC2APIProtocol::UnitInfo&
UnitInfo::_Internal::add_on(const UnitInfo* msg) {
  return *msg->add_on_;
}
UnitInfo::UnitInfo()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.UnitInfo)
}
UnitInfo::UnitInfo(const UnitInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from._internal_has_add_on()) {
    add_on_ = new ::SC2APIProtocol::UnitInfo(*from.add_on_);
  } else {
    add_on_ = nullptr;
  }
  ::memcpy(&unit_type_, &from.unit_type_,
    static_cast<size_t>(reinterpret_cast<char*>(&max_energy_) -
    reinterpret_cast<char*>(&unit_type_)) + sizeof(max_energy_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.UnitInfo)
}

void UnitInfo::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_UnitInfo_s2clientprotocol_2fui_2eproto.base);
  ::memset(&add_on_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&max_energy_) -
      reinterpret_cast<char*>(&add_on_)) + sizeof(max_energy_));
}

UnitInfo::~UnitInfo() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.UnitInfo)
  SharedDtor();
}

void UnitInfo::SharedDtor() {
  if (this != internal_default_instance()) delete add_on_;
}

void UnitInfo::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const UnitInfo& UnitInfo::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_UnitInfo_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void UnitInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.UnitInfo)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(add_on_ != nullptr);
    add_on_->Clear();
  }
  if (cached_has_bits & 0x000000feu) {
    ::memset(&unit_type_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&build_progress_) -
        reinterpret_cast<char*>(&unit_type_)) + sizeof(build_progress_));
  }
  if (cached_has_bits & 0x00000700u) {
    ::memset(&max_health_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&max_energy_) -
        reinterpret_cast<char*>(&max_health_)) + sizeof(max_energy_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* UnitInfo::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional uint32 unit_type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_unit_type(&has_bits);
          unit_type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 player_relative = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_player_relative(&has_bits);
          player_relative_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 health = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_health(&has_bits);
          health_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 shields = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_shields(&has_bits);
          shields_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 energy = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_energy(&has_bits);
          energy_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 transport_slots_taken = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
          _Internal::set_has_transport_slots_taken(&has_bits);
          transport_slots_taken_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional float build_progress = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 61)) {
          _Internal::set_has_build_progress(&has_bits);
          build_progress_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.UnitInfo add_on = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_add_on(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 max_health = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) {
          _Internal::set_has_max_health(&has_bits);
          max_health_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 max_shields = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) {
          _Internal::set_has_max_shields(&has_bits);
          max_shields_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 max_energy = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) {
          _Internal::set_has_max_energy(&has_bits);
          max_energy_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* UnitInfo::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.UnitInfo)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional uint32 unit_type = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_unit_type(), target);
  }

  // optional uint32 player_relative = 2;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_player_relative(), target);
  }

  // optional int32 health = 3;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_health(), target);
  }

  // optional int32 shields = 4;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_shields(), target);
  }

  // optional int32 energy = 5;
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_energy(), target);
  }

  // optional int32 transport_slots_taken = 6;
  if (cached_has_bits & 0x00000040u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(6, this->_internal_transport_slots_taken(), target);
  }

  // optional float build_progress = 7;
  if (cached_has_bits & 0x00000080u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(7, this->_internal_build_progress(), target);
  }

  // optional .SC2APIProtocol.UnitInfo add_on = 8;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        8, _Internal::add_on(this), target, stream);
  }

  // optional int32 max_health = 9;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(9, this->_internal_max_health(), target);
  }

  // optional int32 max_shields = 10;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(10, this->_internal_max_shields(), target);
  }

  // optional int32 max_energy = 11;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(11, this->_internal_max_energy(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.UnitInfo)
  return target;
}

size_t UnitInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.UnitInfo)
  size_t total_size = 0;

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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional .SC2APIProtocol.UnitInfo add_on = 8;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *add_on_);
    }

    // optional uint32 unit_type = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_unit_type());
    }

    // optional uint32 player_relative = 2;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_player_relative());
    }

    // optional int32 health = 3;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_health());
    }

    // optional int32 shields = 4;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_shields());
    }

    // optional int32 energy = 5;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_energy());
    }

    // optional int32 transport_slots_taken = 6;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_transport_slots_taken());
    }

    // optional float build_progress = 7;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 + 4;
    }

  }
  if (cached_has_bits & 0x00000700u) {
    // optional int32 max_health = 9;
    if (cached_has_bits & 0x00000100u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_max_health());
    }

    // optional int32 max_shields = 10;
    if (cached_has_bits & 0x00000200u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_max_shields());
    }

    // optional int32 max_energy = 11;
    if (cached_has_bits & 0x00000400u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_max_energy());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void UnitInfo::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.UnitInfo)
  GOOGLE_DCHECK_NE(&from, this);
  const UnitInfo* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<UnitInfo>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.UnitInfo)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.UnitInfo)
    MergeFrom(*source);
  }
}

void UnitInfo::MergeFrom(const UnitInfo& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.UnitInfo)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_mutable_add_on()->::SC2APIProtocol::UnitInfo::MergeFrom(from._internal_add_on());
    }
    if (cached_has_bits & 0x00000002u) {
      unit_type_ = from.unit_type_;
    }
    if (cached_has_bits & 0x00000004u) {
      player_relative_ = from.player_relative_;
    }
    if (cached_has_bits & 0x00000008u) {
      health_ = from.health_;
    }
    if (cached_has_bits & 0x00000010u) {
      shields_ = from.shields_;
    }
    if (cached_has_bits & 0x00000020u) {
      energy_ = from.energy_;
    }
    if (cached_has_bits & 0x00000040u) {
      transport_slots_taken_ = from.transport_slots_taken_;
    }
    if (cached_has_bits & 0x00000080u) {
      build_progress_ = from.build_progress_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00000700u) {
    if (cached_has_bits & 0x00000100u) {
      max_health_ = from.max_health_;
    }
    if (cached_has_bits & 0x00000200u) {
      max_shields_ = from.max_shields_;
    }
    if (cached_has_bits & 0x00000400u) {
      max_energy_ = from.max_energy_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void UnitInfo::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.UnitInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void UnitInfo::InternalSwap(UnitInfo* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(add_on_, other->add_on_);
  swap(unit_type_, other->unit_type_);
  swap(player_relative_, other->player_relative_);
  swap(health_, other->health_);
  swap(shields_, other->shields_);
  swap(energy_, other->energy_);
  swap(transport_slots_taken_, other->transport_slots_taken_);
  swap(build_progress_, other->build_progress_);
  swap(max_health_, other->max_health_);
  swap(max_shields_, other->max_shields_);
  swap(max_energy_, other->max_energy_);
}

::PROTOBUF_NAMESPACE_ID::Metadata UnitInfo::GetMetadata() const {
  return GetMetadataStatic();
}


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

void SinglePanel::InitAsDefaultInstance() {
  ::SC2APIProtocol::_SinglePanel_default_instance_._instance.get_mutable()->unit_ = const_cast< ::SC2APIProtocol::UnitInfo*>(
      ::SC2APIProtocol::UnitInfo::internal_default_instance());
}
class SinglePanel::_Internal {
 public:
  using HasBits = decltype(std::declval<SinglePanel>()._has_bits_);
  static const ::SC2APIProtocol::UnitInfo& unit(const SinglePanel* msg);
  static void set_has_unit(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_attack_upgrade_level(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_armor_upgrade_level(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_shield_upgrade_level(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
};

const ::SC2APIProtocol::UnitInfo&
SinglePanel::_Internal::unit(const SinglePanel* msg) {
  return *msg->unit_;
}
SinglePanel::SinglePanel()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.SinglePanel)
}
SinglePanel::SinglePanel(const SinglePanel& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      buffs_(from.buffs_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from._internal_has_unit()) {
    unit_ = new ::SC2APIProtocol::UnitInfo(*from.unit_);
  } else {
    unit_ = nullptr;
  }
  ::memcpy(&attack_upgrade_level_, &from.attack_upgrade_level_,
    static_cast<size_t>(reinterpret_cast<char*>(&shield_upgrade_level_) -
    reinterpret_cast<char*>(&attack_upgrade_level_)) + sizeof(shield_upgrade_level_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.SinglePanel)
}

void SinglePanel::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SinglePanel_s2clientprotocol_2fui_2eproto.base);
  ::memset(&unit_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&shield_upgrade_level_) -
      reinterpret_cast<char*>(&unit_)) + sizeof(shield_upgrade_level_));
}

SinglePanel::~SinglePanel() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.SinglePanel)
  SharedDtor();
}

void SinglePanel::SharedDtor() {
  if (this != internal_default_instance()) delete unit_;
}

void SinglePanel::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const SinglePanel& SinglePanel::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_SinglePanel_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void SinglePanel::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.SinglePanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  buffs_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(unit_ != nullptr);
    unit_->Clear();
  }
  if (cached_has_bits & 0x0000000eu) {
    ::memset(&attack_upgrade_level_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&shield_upgrade_level_) -
        reinterpret_cast<char*>(&attack_upgrade_level_)) + sizeof(shield_upgrade_level_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* SinglePanel::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.UnitInfo unit = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_unit(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 attack_upgrade_level = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_attack_upgrade_level(&has_bits);
          attack_upgrade_level_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 armor_upgrade_level = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_armor_upgrade_level(&has_bits);
          armor_upgrade_level_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 shield_upgrade_level = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_shield_upgrade_level(&has_bits);
          shield_upgrade_level_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated int32 buffs = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          ptr -= 1;
          do {
            ptr += 1;
            _internal_add_buffs(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<40>(ptr));
        } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_buffs(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* SinglePanel::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.SinglePanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .SC2APIProtocol.UnitInfo unit = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::unit(this), target, stream);
  }

  // optional int32 attack_upgrade_level = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_attack_upgrade_level(), target);
  }

  // optional int32 armor_upgrade_level = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_armor_upgrade_level(), target);
  }

  // optional int32 shield_upgrade_level = 4;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(4, this->_internal_shield_upgrade_level(), target);
  }

  // repeated int32 buffs = 5;
  for (int i = 0, n = this->_internal_buffs_size(); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(5, this->_internal_buffs(i), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.SinglePanel)
  return target;
}

size_t SinglePanel::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.SinglePanel)
  size_t total_size = 0;

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

  // repeated int32 buffs = 5;
  {
    size_t data_size = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      Int32Size(this->buffs_);
    total_size += 1 *
                  ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->_internal_buffs_size());
    total_size += data_size;
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    // optional .SC2APIProtocol.UnitInfo unit = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *unit_);
    }

    // optional int32 attack_upgrade_level = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_attack_upgrade_level());
    }

    // optional int32 armor_upgrade_level = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_armor_upgrade_level());
    }

    // optional int32 shield_upgrade_level = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_shield_upgrade_level());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SinglePanel::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.SinglePanel)
  GOOGLE_DCHECK_NE(&from, this);
  const SinglePanel* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<SinglePanel>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.SinglePanel)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.SinglePanel)
    MergeFrom(*source);
  }
}

void SinglePanel::MergeFrom(const SinglePanel& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.SinglePanel)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  buffs_.MergeFrom(from.buffs_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_mutable_unit()->::SC2APIProtocol::UnitInfo::MergeFrom(from._internal_unit());
    }
    if (cached_has_bits & 0x00000002u) {
      attack_upgrade_level_ = from.attack_upgrade_level_;
    }
    if (cached_has_bits & 0x00000004u) {
      armor_upgrade_level_ = from.armor_upgrade_level_;
    }
    if (cached_has_bits & 0x00000008u) {
      shield_upgrade_level_ = from.shield_upgrade_level_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SinglePanel::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.SinglePanel)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void SinglePanel::InternalSwap(SinglePanel* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  buffs_.InternalSwap(&other->buffs_);
  swap(unit_, other->unit_);
  swap(attack_upgrade_level_, other->attack_upgrade_level_);
  swap(armor_upgrade_level_, other->armor_upgrade_level_);
  swap(shield_upgrade_level_, other->shield_upgrade_level_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SinglePanel::GetMetadata() const {
  return GetMetadataStatic();
}


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

void MultiPanel::InitAsDefaultInstance() {
}
class MultiPanel::_Internal {
 public:
  using HasBits = decltype(std::declval<MultiPanel>()._has_bits_);
};

MultiPanel::MultiPanel()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.MultiPanel)
}
MultiPanel::MultiPanel(const MultiPanel& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      units_(from.units_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.MultiPanel)
}

void MultiPanel::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_MultiPanel_s2clientprotocol_2fui_2eproto.base);
}

MultiPanel::~MultiPanel() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.MultiPanel)
  SharedDtor();
}

void MultiPanel::SharedDtor() {
}

void MultiPanel::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const MultiPanel& MultiPanel::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_MultiPanel_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void MultiPanel::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.MultiPanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  units_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* MultiPanel::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // repeated .SC2APIProtocol.UnitInfo units = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_units(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* MultiPanel::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.MultiPanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .SC2APIProtocol.UnitInfo units = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_units_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_units(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.MultiPanel)
  return target;
}

size_t MultiPanel::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.MultiPanel)
  size_t total_size = 0;

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

  // repeated .SC2APIProtocol.UnitInfo units = 1;
  total_size += 1UL * this->_internal_units_size();
  for (const auto& msg : this->units_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void MultiPanel::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.MultiPanel)
  GOOGLE_DCHECK_NE(&from, this);
  const MultiPanel* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<MultiPanel>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.MultiPanel)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.MultiPanel)
    MergeFrom(*source);
  }
}

void MultiPanel::MergeFrom(const MultiPanel& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.MultiPanel)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  units_.MergeFrom(from.units_);
}

void MultiPanel::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.MultiPanel)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void MultiPanel::InternalSwap(MultiPanel* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  units_.InternalSwap(&other->units_);
}

::PROTOBUF_NAMESPACE_ID::Metadata MultiPanel::GetMetadata() const {
  return GetMetadataStatic();
}


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

void CargoPanel::InitAsDefaultInstance() {
  ::SC2APIProtocol::_CargoPanel_default_instance_._instance.get_mutable()->unit_ = const_cast< ::SC2APIProtocol::UnitInfo*>(
      ::SC2APIProtocol::UnitInfo::internal_default_instance());
}
class CargoPanel::_Internal {
 public:
  using HasBits = decltype(std::declval<CargoPanel>()._has_bits_);
  static const ::SC2APIProtocol::UnitInfo& unit(const CargoPanel* msg);
  static void set_has_unit(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_slots_available(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::SC2APIProtocol::UnitInfo&
CargoPanel::_Internal::unit(const CargoPanel* msg) {
  return *msg->unit_;
}
CargoPanel::CargoPanel()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.CargoPanel)
}
CargoPanel::CargoPanel(const CargoPanel& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      passengers_(from.passengers_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from._internal_has_unit()) {
    unit_ = new ::SC2APIProtocol::UnitInfo(*from.unit_);
  } else {
    unit_ = nullptr;
  }
  slots_available_ = from.slots_available_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.CargoPanel)
}

void CargoPanel::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_CargoPanel_s2clientprotocol_2fui_2eproto.base);
  ::memset(&unit_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&slots_available_) -
      reinterpret_cast<char*>(&unit_)) + sizeof(slots_available_));
}

CargoPanel::~CargoPanel() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.CargoPanel)
  SharedDtor();
}

void CargoPanel::SharedDtor() {
  if (this != internal_default_instance()) delete unit_;
}

void CargoPanel::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const CargoPanel& CargoPanel::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_CargoPanel_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void CargoPanel::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.CargoPanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  passengers_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(unit_ != nullptr);
    unit_->Clear();
  }
  slots_available_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* CargoPanel::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.UnitInfo unit = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_unit(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .SC2APIProtocol.UnitInfo passengers = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_passengers(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else goto handle_unusual;
        continue;
      // optional int32 slots_available = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_slots_available(&has_bits);
          slots_available_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* CargoPanel::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.CargoPanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .SC2APIProtocol.UnitInfo unit = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::unit(this), target, stream);
  }

  // repeated .SC2APIProtocol.UnitInfo passengers = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_passengers_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_passengers(i), target, stream);
  }

  // optional int32 slots_available = 3;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_slots_available(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.CargoPanel)
  return target;
}

size_t CargoPanel::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.CargoPanel)
  size_t total_size = 0;

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

  // repeated .SC2APIProtocol.UnitInfo passengers = 2;
  total_size += 1UL * this->_internal_passengers_size();
  for (const auto& msg : this->passengers_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional .SC2APIProtocol.UnitInfo unit = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *unit_);
    }

    // optional int32 slots_available = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_slots_available());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void CargoPanel::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.CargoPanel)
  GOOGLE_DCHECK_NE(&from, this);
  const CargoPanel* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<CargoPanel>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.CargoPanel)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.CargoPanel)
    MergeFrom(*source);
  }
}

void CargoPanel::MergeFrom(const CargoPanel& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.CargoPanel)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  passengers_.MergeFrom(from.passengers_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_mutable_unit()->::SC2APIProtocol::UnitInfo::MergeFrom(from._internal_unit());
    }
    if (cached_has_bits & 0x00000002u) {
      slots_available_ = from.slots_available_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void CargoPanel::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.CargoPanel)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void CargoPanel::InternalSwap(CargoPanel* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  passengers_.InternalSwap(&other->passengers_);
  swap(unit_, other->unit_);
  swap(slots_available_, other->slots_available_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CargoPanel::GetMetadata() const {
  return GetMetadataStatic();
}


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

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

BuildItem::BuildItem()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.BuildItem)
}
BuildItem::BuildItem(const BuildItem& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&ability_id_, &from.ability_id_,
    static_cast<size_t>(reinterpret_cast<char*>(&build_progress_) -
    reinterpret_cast<char*>(&ability_id_)) + sizeof(build_progress_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.BuildItem)
}

void BuildItem::SharedCtor() {
  ::memset(&ability_id_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&build_progress_) -
      reinterpret_cast<char*>(&ability_id_)) + sizeof(build_progress_));
}

BuildItem::~BuildItem() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.BuildItem)
  SharedDtor();
}

void BuildItem::SharedDtor() {
}

void BuildItem::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const BuildItem& BuildItem::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_BuildItem_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void BuildItem::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.BuildItem)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

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

const char* BuildItem::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional uint32 ability_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_ability_id(&has_bits);
          ability_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional float build_progress = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 21)) {
          _Internal::set_has_build_progress(&has_bits);
          build_progress_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* BuildItem::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.BuildItem)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional uint32 ability_id = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(1, this->_internal_ability_id(), target);
  }

  // optional float build_progress = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(2, this->_internal_build_progress(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.BuildItem)
  return target;
}

size_t BuildItem::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.BuildItem)
  size_t total_size = 0;

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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional uint32 ability_id = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_ability_id());
    }

    // optional float build_progress = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 4;
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void BuildItem::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.BuildItem)
  GOOGLE_DCHECK_NE(&from, this);
  const BuildItem* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<BuildItem>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.BuildItem)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.BuildItem)
    MergeFrom(*source);
  }
}

void BuildItem::MergeFrom(const BuildItem& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.BuildItem)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      ability_id_ = from.ability_id_;
    }
    if (cached_has_bits & 0x00000002u) {
      build_progress_ = from.build_progress_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void BuildItem::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.BuildItem)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void BuildItem::InternalSwap(BuildItem* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(ability_id_, other->ability_id_);
  swap(build_progress_, other->build_progress_);
}

::PROTOBUF_NAMESPACE_ID::Metadata BuildItem::GetMetadata() const {
  return GetMetadataStatic();
}


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

void ProductionPanel::InitAsDefaultInstance() {
  ::SC2APIProtocol::_ProductionPanel_default_instance_._instance.get_mutable()->unit_ = const_cast< ::SC2APIProtocol::UnitInfo*>(
      ::SC2APIProtocol::UnitInfo::internal_default_instance());
}
class ProductionPanel::_Internal {
 public:
  using HasBits = decltype(std::declval<ProductionPanel>()._has_bits_);
  static const ::SC2APIProtocol::UnitInfo& unit(const ProductionPanel* msg);
  static void set_has_unit(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::SC2APIProtocol::UnitInfo&
ProductionPanel::_Internal::unit(const ProductionPanel* msg) {
  return *msg->unit_;
}
ProductionPanel::ProductionPanel()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ProductionPanel)
}
ProductionPanel::ProductionPanel(const ProductionPanel& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      build_queue_(from.build_queue_),
      production_queue_(from.production_queue_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from._internal_has_unit()) {
    unit_ = new ::SC2APIProtocol::UnitInfo(*from.unit_);
  } else {
    unit_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ProductionPanel)
}

void ProductionPanel::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ProductionPanel_s2clientprotocol_2fui_2eproto.base);
  unit_ = nullptr;
}

ProductionPanel::~ProductionPanel() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ProductionPanel)
  SharedDtor();
}

void ProductionPanel::SharedDtor() {
  if (this != internal_default_instance()) delete unit_;
}

void ProductionPanel::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ProductionPanel& ProductionPanel::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ProductionPanel_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ProductionPanel::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ProductionPanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  build_queue_.Clear();
  production_queue_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(unit_ != nullptr);
    unit_->Clear();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ProductionPanel::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.UnitInfo unit = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_unit(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .SC2APIProtocol.UnitInfo build_queue = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_build_queue(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else goto handle_unusual;
        continue;
      // repeated .SC2APIProtocol.BuildItem production_queue = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_production_queue(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ProductionPanel::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ProductionPanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .SC2APIProtocol.UnitInfo unit = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        1, _Internal::unit(this), target, stream);
  }

  // repeated .SC2APIProtocol.UnitInfo build_queue = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_build_queue_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_build_queue(i), target, stream);
  }

  // repeated .SC2APIProtocol.BuildItem production_queue = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_production_queue_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, this->_internal_production_queue(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ProductionPanel)
  return target;
}

size_t ProductionPanel::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ProductionPanel)
  size_t total_size = 0;

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

  // repeated .SC2APIProtocol.UnitInfo build_queue = 2;
  total_size += 1UL * this->_internal_build_queue_size();
  for (const auto& msg : this->build_queue_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .SC2APIProtocol.BuildItem production_queue = 3;
  total_size += 1UL * this->_internal_production_queue_size();
  for (const auto& msg : this->production_queue_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // optional .SC2APIProtocol.UnitInfo unit = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *unit_);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ProductionPanel::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ProductionPanel)
  GOOGLE_DCHECK_NE(&from, this);
  const ProductionPanel* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ProductionPanel>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ProductionPanel)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ProductionPanel)
    MergeFrom(*source);
  }
}

void ProductionPanel::MergeFrom(const ProductionPanel& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ProductionPanel)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  build_queue_.MergeFrom(from.build_queue_);
  production_queue_.MergeFrom(from.production_queue_);
  if (from._internal_has_unit()) {
    _internal_mutable_unit()->::SC2APIProtocol::UnitInfo::MergeFrom(from._internal_unit());
  }
}

void ProductionPanel::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ProductionPanel)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ProductionPanel::InternalSwap(ProductionPanel* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  build_queue_.InternalSwap(&other->build_queue_);
  production_queue_.InternalSwap(&other->production_queue_);
  swap(unit_, other->unit_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ProductionPanel::GetMetadata() const {
  return GetMetadataStatic();
}


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

void ActionUI::InitAsDefaultInstance() {
  ::SC2APIProtocol::_ActionUI_default_instance_.control_group_ = const_cast< ::SC2APIProtocol::ActionControlGroup*>(
      ::SC2APIProtocol::ActionControlGroup::internal_default_instance());
  ::SC2APIProtocol::_ActionUI_default_instance_.select_army_ = const_cast< ::SC2APIProtocol::ActionSelectArmy*>(
      ::SC2APIProtocol::ActionSelectArmy::internal_default_instance());
  ::SC2APIProtocol::_ActionUI_default_instance_.select_warp_gates_ = const_cast< ::SC2APIProtocol::ActionSelectWarpGates*>(
      ::SC2APIProtocol::ActionSelectWarpGates::internal_default_instance());
  ::SC2APIProtocol::_ActionUI_default_instance_.select_larva_ = const_cast< ::SC2APIProtocol::ActionSelectLarva*>(
      ::SC2APIProtocol::ActionSelectLarva::internal_default_instance());
  ::SC2APIProtocol::_ActionUI_default_instance_.select_idle_worker_ = const_cast< ::SC2APIProtocol::ActionSelectIdleWorker*>(
      ::SC2APIProtocol::ActionSelectIdleWorker::internal_default_instance());
  ::SC2APIProtocol::_ActionUI_default_instance_.multi_panel_ = const_cast< ::SC2APIProtocol::ActionMultiPanel*>(
      ::SC2APIProtocol::ActionMultiPanel::internal_default_instance());
  ::SC2APIProtocol::_ActionUI_default_instance_.cargo_panel_ = const_cast< ::SC2APIProtocol::ActionCargoPanelUnload*>(
      ::SC2APIProtocol::ActionCargoPanelUnload::internal_default_instance());
  ::SC2APIProtocol::_ActionUI_default_instance_.production_panel_ = const_cast< ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue*>(
      ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue::internal_default_instance());
  ::SC2APIProtocol::_ActionUI_default_instance_.toggle_autocast_ = const_cast< ::SC2APIProtocol::ActionToggleAutocast*>(
      ::SC2APIProtocol::ActionToggleAutocast::internal_default_instance());
}
class ActionUI::_Internal {
 public:
  using HasBits = decltype(std::declval<ActionUI>()._has_bits_);
  static const ::SC2APIProtocol::ActionControlGroup& control_group(const ActionUI* msg);
  static const ::SC2APIProtocol::ActionSelectArmy& select_army(const ActionUI* msg);
  static const ::SC2APIProtocol::ActionSelectWarpGates& select_warp_gates(const ActionUI* msg);
  static const ::SC2APIProtocol::ActionSelectLarva& select_larva(const ActionUI* msg);
  static const ::SC2APIProtocol::ActionSelectIdleWorker& select_idle_worker(const ActionUI* msg);
  static const ::SC2APIProtocol::ActionMultiPanel& multi_panel(const ActionUI* msg);
  static const ::SC2APIProtocol::ActionCargoPanelUnload& cargo_panel(const ActionUI* msg);
  static const ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue& production_panel(const ActionUI* msg);
  static const ::SC2APIProtocol::ActionToggleAutocast& toggle_autocast(const ActionUI* msg);
};

const ::SC2APIProtocol::ActionControlGroup&
ActionUI::_Internal::control_group(const ActionUI* msg) {
  return *msg->action_.control_group_;
}
const ::SC2APIProtocol::ActionSelectArmy&
ActionUI::_Internal::select_army(const ActionUI* msg) {
  return *msg->action_.select_army_;
}
const ::SC2APIProtocol::ActionSelectWarpGates&
ActionUI::_Internal::select_warp_gates(const ActionUI* msg) {
  return *msg->action_.select_warp_gates_;
}
const ::SC2APIProtocol::ActionSelectLarva&
ActionUI::_Internal::select_larva(const ActionUI* msg) {
  return *msg->action_.select_larva_;
}
const ::SC2APIProtocol::ActionSelectIdleWorker&
ActionUI::_Internal::select_idle_worker(const ActionUI* msg) {
  return *msg->action_.select_idle_worker_;
}
const ::SC2APIProtocol::ActionMultiPanel&
ActionUI::_Internal::multi_panel(const ActionUI* msg) {
  return *msg->action_.multi_panel_;
}
const ::SC2APIProtocol::ActionCargoPanelUnload&
ActionUI::_Internal::cargo_panel(const ActionUI* msg) {
  return *msg->action_.cargo_panel_;
}
const ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue&
ActionUI::_Internal::production_panel(const ActionUI* msg) {
  return *msg->action_.production_panel_;
}
const ::SC2APIProtocol::ActionToggleAutocast&
ActionUI::_Internal::toggle_autocast(const ActionUI* msg) {
  return *msg->action_.toggle_autocast_;
}
void ActionUI::set_allocated_control_group(::SC2APIProtocol::ActionControlGroup* control_group) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_action();
  if (control_group) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      control_group = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, control_group, submessage_arena);
    }
    set_has_control_group();
    action_.control_group_ = control_group;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ActionUI.control_group)
}
void ActionUI::set_allocated_select_army(::SC2APIProtocol::ActionSelectArmy* select_army) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_action();
  if (select_army) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      select_army = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, select_army, submessage_arena);
    }
    set_has_select_army();
    action_.select_army_ = select_army;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ActionUI.select_army)
}
void ActionUI::set_allocated_select_warp_gates(::SC2APIProtocol::ActionSelectWarpGates* select_warp_gates) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_action();
  if (select_warp_gates) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      select_warp_gates = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, select_warp_gates, submessage_arena);
    }
    set_has_select_warp_gates();
    action_.select_warp_gates_ = select_warp_gates;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ActionUI.select_warp_gates)
}
void ActionUI::set_allocated_select_larva(::SC2APIProtocol::ActionSelectLarva* select_larva) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_action();
  if (select_larva) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      select_larva = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, select_larva, submessage_arena);
    }
    set_has_select_larva();
    action_.select_larva_ = select_larva;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ActionUI.select_larva)
}
void ActionUI::set_allocated_select_idle_worker(::SC2APIProtocol::ActionSelectIdleWorker* select_idle_worker) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_action();
  if (select_idle_worker) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      select_idle_worker = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, select_idle_worker, submessage_arena);
    }
    set_has_select_idle_worker();
    action_.select_idle_worker_ = select_idle_worker;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ActionUI.select_idle_worker)
}
void ActionUI::set_allocated_multi_panel(::SC2APIProtocol::ActionMultiPanel* multi_panel) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_action();
  if (multi_panel) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      multi_panel = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, multi_panel, submessage_arena);
    }
    set_has_multi_panel();
    action_.multi_panel_ = multi_panel;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ActionUI.multi_panel)
}
void ActionUI::set_allocated_cargo_panel(::SC2APIProtocol::ActionCargoPanelUnload* cargo_panel) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_action();
  if (cargo_panel) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      cargo_panel = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, cargo_panel, submessage_arena);
    }
    set_has_cargo_panel();
    action_.cargo_panel_ = cargo_panel;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ActionUI.cargo_panel)
}
void ActionUI::set_allocated_production_panel(::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* production_panel) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_action();
  if (production_panel) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      production_panel = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, production_panel, submessage_arena);
    }
    set_has_production_panel();
    action_.production_panel_ = production_panel;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ActionUI.production_panel)
}
void ActionUI::set_allocated_toggle_autocast(::SC2APIProtocol::ActionToggleAutocast* toggle_autocast) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
  clear_action();
  if (toggle_autocast) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
    if (message_arena != submessage_arena) {
      toggle_autocast = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, toggle_autocast, submessage_arena);
    }
    set_has_toggle_autocast();
    action_.toggle_autocast_ = toggle_autocast;
  }
  // @@protoc_insertion_point(field_set_allocated:SC2APIProtocol.ActionUI.toggle_autocast)
}
ActionUI::ActionUI()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionUI)
}
ActionUI::ActionUI(const ActionUI& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  clear_has_action();
  switch (from.action_case()) {
    case kControlGroup: {
      _internal_mutable_control_group()->::SC2APIProtocol::ActionControlGroup::MergeFrom(from._internal_control_group());
      break;
    }
    case kSelectArmy: {
      _internal_mutable_select_army()->::SC2APIProtocol::ActionSelectArmy::MergeFrom(from._internal_select_army());
      break;
    }
    case kSelectWarpGates: {
      _internal_mutable_select_warp_gates()->::SC2APIProtocol::ActionSelectWarpGates::MergeFrom(from._internal_select_warp_gates());
      break;
    }
    case kSelectLarva: {
      _internal_mutable_select_larva()->::SC2APIProtocol::ActionSelectLarva::MergeFrom(from._internal_select_larva());
      break;
    }
    case kSelectIdleWorker: {
      _internal_mutable_select_idle_worker()->::SC2APIProtocol::ActionSelectIdleWorker::MergeFrom(from._internal_select_idle_worker());
      break;
    }
    case kMultiPanel: {
      _internal_mutable_multi_panel()->::SC2APIProtocol::ActionMultiPanel::MergeFrom(from._internal_multi_panel());
      break;
    }
    case kCargoPanel: {
      _internal_mutable_cargo_panel()->::SC2APIProtocol::ActionCargoPanelUnload::MergeFrom(from._internal_cargo_panel());
      break;
    }
    case kProductionPanel: {
      _internal_mutable_production_panel()->::SC2APIProtocol::ActionProductionPanelRemoveFromQueue::MergeFrom(from._internal_production_panel());
      break;
    }
    case kToggleAutocast: {
      _internal_mutable_toggle_autocast()->::SC2APIProtocol::ActionToggleAutocast::MergeFrom(from._internal_toggle_autocast());
      break;
    }
    case ACTION_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionUI)
}

void ActionUI::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ActionUI_s2clientprotocol_2fui_2eproto.base);
  clear_has_action();
}

ActionUI::~ActionUI() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionUI)
  SharedDtor();
}

void ActionUI::SharedDtor() {
  if (has_action()) {
    clear_action();
  }
}

void ActionUI::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionUI& ActionUI::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionUI_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionUI::clear_action() {
// @@protoc_insertion_point(one_of_clear_start:SC2APIProtocol.ActionUI)
  switch (action_case()) {
    case kControlGroup: {
      delete action_.control_group_;
      break;
    }
    case kSelectArmy: {
      delete action_.select_army_;
      break;
    }
    case kSelectWarpGates: {
      delete action_.select_warp_gates_;
      break;
    }
    case kSelectLarva: {
      delete action_.select_larva_;
      break;
    }
    case kSelectIdleWorker: {
      delete action_.select_idle_worker_;
      break;
    }
    case kMultiPanel: {
      delete action_.multi_panel_;
      break;
    }
    case kCargoPanel: {
      delete action_.cargo_panel_;
      break;
    }
    case kProductionPanel: {
      delete action_.production_panel_;
      break;
    }
    case kToggleAutocast: {
      delete action_.toggle_autocast_;
      break;
    }
    case ACTION_NOT_SET: {
      break;
    }
  }
  _oneof_case_[0] = ACTION_NOT_SET;
}


void ActionUI::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionUI)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_action();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionUI::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.ActionControlGroup control_group = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_control_group(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ActionSelectArmy select_army = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_select_army(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ActionSelectWarpGates select_warp_gates = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_select_warp_gates(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ActionSelectLarva select_larva = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_select_larva(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ActionSelectIdleWorker select_idle_worker = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_select_idle_worker(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ActionMultiPanel multi_panel = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_multi_panel(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ActionCargoPanelUnload cargo_panel = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_cargo_panel(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ActionProductionPanelRemoveFromQueue production_panel = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_production_panel(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ActionToggleAutocast toggle_autocast = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_toggle_autocast(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionUI::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionUI)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  switch (action_case()) {
    case kControlGroup: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          1, _Internal::control_group(this), target, stream);
      break;
    }
    case kSelectArmy: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          2, _Internal::select_army(this), target, stream);
      break;
    }
    case kSelectWarpGates: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          3, _Internal::select_warp_gates(this), target, stream);
      break;
    }
    case kSelectLarva: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          4, _Internal::select_larva(this), target, stream);
      break;
    }
    case kSelectIdleWorker: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          5, _Internal::select_idle_worker(this), target, stream);
      break;
    }
    case kMultiPanel: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          6, _Internal::multi_panel(this), target, stream);
      break;
    }
    case kCargoPanel: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          7, _Internal::cargo_panel(this), target, stream);
      break;
    }
    case kProductionPanel: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          8, _Internal::production_panel(this), target, stream);
      break;
    }
    case kToggleAutocast: {
      target = stream->EnsureSpace(target);
      target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(
          9, _Internal::toggle_autocast(this), target, stream);
      break;
    }
    default: ;
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionUI)
  return target;
}

size_t ActionUI::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionUI)
  size_t total_size = 0;

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

  switch (action_case()) {
    // optional .SC2APIProtocol.ActionControlGroup control_group = 1;
    case kControlGroup: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *action_.control_group_);
      break;
    }
    // optional .SC2APIProtocol.ActionSelectArmy select_army = 2;
    case kSelectArmy: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *action_.select_army_);
      break;
    }
    // optional .SC2APIProtocol.ActionSelectWarpGates select_warp_gates = 3;
    case kSelectWarpGates: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *action_.select_warp_gates_);
      break;
    }
    // optional .SC2APIProtocol.ActionSelectLarva select_larva = 4;
    case kSelectLarva: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *action_.select_larva_);
      break;
    }
    // optional .SC2APIProtocol.ActionSelectIdleWorker select_idle_worker = 5;
    case kSelectIdleWorker: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *action_.select_idle_worker_);
      break;
    }
    // optional .SC2APIProtocol.ActionMultiPanel multi_panel = 6;
    case kMultiPanel: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *action_.multi_panel_);
      break;
    }
    // optional .SC2APIProtocol.ActionCargoPanelUnload cargo_panel = 7;
    case kCargoPanel: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *action_.cargo_panel_);
      break;
    }
    // optional .SC2APIProtocol.ActionProductionPanelRemoveFromQueue production_panel = 8;
    case kProductionPanel: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *action_.production_panel_);
      break;
    }
    // optional .SC2APIProtocol.ActionToggleAutocast toggle_autocast = 9;
    case kToggleAutocast: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *action_.toggle_autocast_);
      break;
    }
    case ACTION_NOT_SET: {
      break;
    }
  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionUI::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionUI)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionUI* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionUI>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionUI)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionUI)
    MergeFrom(*source);
  }
}

void ActionUI::MergeFrom(const ActionUI& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionUI)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.action_case()) {
    case kControlGroup: {
      _internal_mutable_control_group()->::SC2APIProtocol::ActionControlGroup::MergeFrom(from._internal_control_group());
      break;
    }
    case kSelectArmy: {
      _internal_mutable_select_army()->::SC2APIProtocol::ActionSelectArmy::MergeFrom(from._internal_select_army());
      break;
    }
    case kSelectWarpGates: {
      _internal_mutable_select_warp_gates()->::SC2APIProtocol::ActionSelectWarpGates::MergeFrom(from._internal_select_warp_gates());
      break;
    }
    case kSelectLarva: {
      _internal_mutable_select_larva()->::SC2APIProtocol::ActionSelectLarva::MergeFrom(from._internal_select_larva());
      break;
    }
    case kSelectIdleWorker: {
      _internal_mutable_select_idle_worker()->::SC2APIProtocol::ActionSelectIdleWorker::MergeFrom(from._internal_select_idle_worker());
      break;
    }
    case kMultiPanel: {
      _internal_mutable_multi_panel()->::SC2APIProtocol::ActionMultiPanel::MergeFrom(from._internal_multi_panel());
      break;
    }
    case kCargoPanel: {
      _internal_mutable_cargo_panel()->::SC2APIProtocol::ActionCargoPanelUnload::MergeFrom(from._internal_cargo_panel());
      break;
    }
    case kProductionPanel: {
      _internal_mutable_production_panel()->::SC2APIProtocol::ActionProductionPanelRemoveFromQueue::MergeFrom(from._internal_production_panel());
      break;
    }
    case kToggleAutocast: {
      _internal_mutable_toggle_autocast()->::SC2APIProtocol::ActionToggleAutocast::MergeFrom(from._internal_toggle_autocast());
      break;
    }
    case ACTION_NOT_SET: {
      break;
    }
  }
}

void ActionUI::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionUI)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionUI::InternalSwap(ActionUI* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(action_, other->action_);
  swap(_oneof_case_[0], other->_oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionUI::GetMetadata() const {
  return GetMetadataStatic();
}


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

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

ActionControlGroup::ActionControlGroup()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionControlGroup)
}
ActionControlGroup::ActionControlGroup(const ActionControlGroup& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&control_group_index_, &from.control_group_index_,
    static_cast<size_t>(reinterpret_cast<char*>(&action_) -
    reinterpret_cast<char*>(&control_group_index_)) + sizeof(action_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionControlGroup)
}

void ActionControlGroup::SharedCtor() {
  control_group_index_ = 0u;
  action_ = 1;
}

ActionControlGroup::~ActionControlGroup() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionControlGroup)
  SharedDtor();
}

void ActionControlGroup::SharedDtor() {
}

void ActionControlGroup::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionControlGroup& ActionControlGroup::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionControlGroup_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionControlGroup::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionControlGroup)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    control_group_index_ = 0u;
    action_ = 1;
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionControlGroup::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.ActionControlGroup.ControlGroupAction action = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::SC2APIProtocol::ActionControlGroup_ControlGroupAction_IsValid(val))) {
            _internal_set_action(static_cast<::SC2APIProtocol::ActionControlGroup_ControlGroupAction>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(1, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional uint32 control_group_index = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_control_group_index(&has_bits);
          control_group_index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionControlGroup::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionControlGroup)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .SC2APIProtocol.ActionControlGroup.ControlGroupAction action = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      1, this->_internal_action(), target);
  }

  // optional uint32 control_group_index = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(2, this->_internal_control_group_index(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionControlGroup)
  return target;
}

size_t ActionControlGroup::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionControlGroup)
  size_t total_size = 0;

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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional uint32 control_group_index = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->_internal_control_group_index());
    }

    // optional .SC2APIProtocol.ActionControlGroup.ControlGroupAction action = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_action());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionControlGroup::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionControlGroup)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionControlGroup* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionControlGroup>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionControlGroup)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionControlGroup)
    MergeFrom(*source);
  }
}

void ActionControlGroup::MergeFrom(const ActionControlGroup& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionControlGroup)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      control_group_index_ = from.control_group_index_;
    }
    if (cached_has_bits & 0x00000002u) {
      action_ = from.action_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void ActionControlGroup::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionControlGroup)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionControlGroup::InternalSwap(ActionControlGroup* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(control_group_index_, other->control_group_index_);
  swap(action_, other->action_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionControlGroup::GetMetadata() const {
  return GetMetadataStatic();
}


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

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

ActionSelectArmy::ActionSelectArmy()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionSelectArmy)
}
ActionSelectArmy::ActionSelectArmy(const ActionSelectArmy& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  selection_add_ = from.selection_add_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionSelectArmy)
}

void ActionSelectArmy::SharedCtor() {
  selection_add_ = false;
}

ActionSelectArmy::~ActionSelectArmy() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionSelectArmy)
  SharedDtor();
}

void ActionSelectArmy::SharedDtor() {
}

void ActionSelectArmy::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionSelectArmy& ActionSelectArmy::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionSelectArmy_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionSelectArmy::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionSelectArmy)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  selection_add_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionSelectArmy::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional bool selection_add = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_selection_add(&has_bits);
          selection_add_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionSelectArmy::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionSelectArmy)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool selection_add = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_selection_add(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionSelectArmy)
  return target;
}

size_t ActionSelectArmy::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionSelectArmy)
  size_t total_size = 0;

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

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionSelectArmy::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionSelectArmy)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionSelectArmy* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionSelectArmy>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionSelectArmy)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionSelectArmy)
    MergeFrom(*source);
  }
}

void ActionSelectArmy::MergeFrom(const ActionSelectArmy& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionSelectArmy)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_selection_add()) {
    _internal_set_selection_add(from._internal_selection_add());
  }
}

void ActionSelectArmy::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionSelectArmy)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionSelectArmy::InternalSwap(ActionSelectArmy* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(selection_add_, other->selection_add_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionSelectArmy::GetMetadata() const {
  return GetMetadataStatic();
}


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

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

ActionSelectWarpGates::ActionSelectWarpGates()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionSelectWarpGates)
}
ActionSelectWarpGates::ActionSelectWarpGates(const ActionSelectWarpGates& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  selection_add_ = from.selection_add_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionSelectWarpGates)
}

void ActionSelectWarpGates::SharedCtor() {
  selection_add_ = false;
}

ActionSelectWarpGates::~ActionSelectWarpGates() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionSelectWarpGates)
  SharedDtor();
}

void ActionSelectWarpGates::SharedDtor() {
}

void ActionSelectWarpGates::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionSelectWarpGates& ActionSelectWarpGates::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionSelectWarpGates_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionSelectWarpGates::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionSelectWarpGates)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  selection_add_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionSelectWarpGates::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional bool selection_add = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_selection_add(&has_bits);
          selection_add_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionSelectWarpGates::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionSelectWarpGates)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool selection_add = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(1, this->_internal_selection_add(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionSelectWarpGates)
  return target;
}

size_t ActionSelectWarpGates::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionSelectWarpGates)
  size_t total_size = 0;

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

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionSelectWarpGates::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionSelectWarpGates)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionSelectWarpGates* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionSelectWarpGates>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionSelectWarpGates)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionSelectWarpGates)
    MergeFrom(*source);
  }
}

void ActionSelectWarpGates::MergeFrom(const ActionSelectWarpGates& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionSelectWarpGates)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_selection_add()) {
    _internal_set_selection_add(from._internal_selection_add());
  }
}

void ActionSelectWarpGates::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionSelectWarpGates)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionSelectWarpGates::InternalSwap(ActionSelectWarpGates* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(selection_add_, other->selection_add_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionSelectWarpGates::GetMetadata() const {
  return GetMetadataStatic();
}


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

void ActionSelectLarva::InitAsDefaultInstance() {
}
class ActionSelectLarva::_Internal {
 public:
  using HasBits = decltype(std::declval<ActionSelectLarva>()._has_bits_);
};

ActionSelectLarva::ActionSelectLarva()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionSelectLarva)
}
ActionSelectLarva::ActionSelectLarva(const ActionSelectLarva& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionSelectLarva)
}

void ActionSelectLarva::SharedCtor() {
}

ActionSelectLarva::~ActionSelectLarva() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionSelectLarva)
  SharedDtor();
}

void ActionSelectLarva::SharedDtor() {
}

void ActionSelectLarva::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionSelectLarva& ActionSelectLarva::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionSelectLarva_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionSelectLarva::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionSelectLarva)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionSelectLarva::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
  }  // while
success:
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionSelectLarva::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionSelectLarva)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionSelectLarva)
  return target;
}

size_t ActionSelectLarva::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionSelectLarva)
  size_t total_size = 0;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionSelectLarva::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionSelectLarva)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionSelectLarva* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionSelectLarva>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionSelectLarva)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionSelectLarva)
    MergeFrom(*source);
  }
}

void ActionSelectLarva::MergeFrom(const ActionSelectLarva& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionSelectLarva)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

}

void ActionSelectLarva::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionSelectLarva)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionSelectLarva::InternalSwap(ActionSelectLarva* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionSelectLarva::GetMetadata() const {
  return GetMetadataStatic();
}


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

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

ActionSelectIdleWorker::ActionSelectIdleWorker()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionSelectIdleWorker)
}
ActionSelectIdleWorker::ActionSelectIdleWorker(const ActionSelectIdleWorker& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  type_ = from.type_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionSelectIdleWorker)
}

void ActionSelectIdleWorker::SharedCtor() {
  type_ = 1;
}

ActionSelectIdleWorker::~ActionSelectIdleWorker() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionSelectIdleWorker)
  SharedDtor();
}

void ActionSelectIdleWorker::SharedDtor() {
}

void ActionSelectIdleWorker::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionSelectIdleWorker& ActionSelectIdleWorker::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionSelectIdleWorker_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionSelectIdleWorker::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionSelectIdleWorker)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  type_ = 1;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionSelectIdleWorker::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.ActionSelectIdleWorker.Type type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::SC2APIProtocol::ActionSelectIdleWorker_Type_IsValid(val))) {
            _internal_set_type(static_cast<::SC2APIProtocol::ActionSelectIdleWorker_Type>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(1, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionSelectIdleWorker::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionSelectIdleWorker)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .SC2APIProtocol.ActionSelectIdleWorker.Type type = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      1, this->_internal_type(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionSelectIdleWorker)
  return target;
}

size_t ActionSelectIdleWorker::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionSelectIdleWorker)
  size_t total_size = 0;

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

  // optional .SC2APIProtocol.ActionSelectIdleWorker.Type type = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_type());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionSelectIdleWorker::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionSelectIdleWorker)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionSelectIdleWorker* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionSelectIdleWorker>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionSelectIdleWorker)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionSelectIdleWorker)
    MergeFrom(*source);
  }
}

void ActionSelectIdleWorker::MergeFrom(const ActionSelectIdleWorker& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionSelectIdleWorker)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_type()) {
    _internal_set_type(from._internal_type());
  }
}

void ActionSelectIdleWorker::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionSelectIdleWorker)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionSelectIdleWorker::InternalSwap(ActionSelectIdleWorker* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(type_, other->type_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionSelectIdleWorker::GetMetadata() const {
  return GetMetadataStatic();
}


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

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

ActionMultiPanel::ActionMultiPanel()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionMultiPanel)
}
ActionMultiPanel::ActionMultiPanel(const ActionMultiPanel& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&unit_index_, &from.unit_index_,
    static_cast<size_t>(reinterpret_cast<char*>(&type_) -
    reinterpret_cast<char*>(&unit_index_)) + sizeof(type_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionMultiPanel)
}

void ActionMultiPanel::SharedCtor() {
  unit_index_ = 0;
  type_ = 1;
}

ActionMultiPanel::~ActionMultiPanel() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionMultiPanel)
  SharedDtor();
}

void ActionMultiPanel::SharedDtor() {
}

void ActionMultiPanel::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionMultiPanel& ActionMultiPanel::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionMultiPanel_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionMultiPanel::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionMultiPanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    unit_index_ = 0;
    type_ = 1;
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionMultiPanel::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.ActionMultiPanel.Type type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::SC2APIProtocol::ActionMultiPanel_Type_IsValid(val))) {
            _internal_set_type(static_cast<::SC2APIProtocol::ActionMultiPanel_Type>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(1, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional int32 unit_index = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_unit_index(&has_bits);
          unit_index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionMultiPanel::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionMultiPanel)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .SC2APIProtocol.ActionMultiPanel.Type type = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      1, this->_internal_type(), target);
  }

  // optional int32 unit_index = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_unit_index(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionMultiPanel)
  return target;
}

size_t ActionMultiPanel::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionMultiPanel)
  size_t total_size = 0;

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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional int32 unit_index = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_unit_index());
    }

    // optional .SC2APIProtocol.ActionMultiPanel.Type type = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_type());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionMultiPanel::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionMultiPanel)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionMultiPanel* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionMultiPanel>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionMultiPanel)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionMultiPanel)
    MergeFrom(*source);
  }
}

void ActionMultiPanel::MergeFrom(const ActionMultiPanel& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionMultiPanel)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      unit_index_ = from.unit_index_;
    }
    if (cached_has_bits & 0x00000002u) {
      type_ = from.type_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void ActionMultiPanel::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionMultiPanel)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionMultiPanel::InternalSwap(ActionMultiPanel* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(unit_index_, other->unit_index_);
  swap(type_, other->type_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionMultiPanel::GetMetadata() const {
  return GetMetadataStatic();
}


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

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

ActionCargoPanelUnload::ActionCargoPanelUnload()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionCargoPanelUnload)
}
ActionCargoPanelUnload::ActionCargoPanelUnload(const ActionCargoPanelUnload& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  unit_index_ = from.unit_index_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionCargoPanelUnload)
}

void ActionCargoPanelUnload::SharedCtor() {
  unit_index_ = 0;
}

ActionCargoPanelUnload::~ActionCargoPanelUnload() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionCargoPanelUnload)
  SharedDtor();
}

void ActionCargoPanelUnload::SharedDtor() {
}

void ActionCargoPanelUnload::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionCargoPanelUnload& ActionCargoPanelUnload::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionCargoPanelUnload_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionCargoPanelUnload::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionCargoPanelUnload)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  unit_index_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionCargoPanelUnload::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional int32 unit_index = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_unit_index(&has_bits);
          unit_index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionCargoPanelUnload::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionCargoPanelUnload)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionCargoPanelUnload)
  return target;
}

size_t ActionCargoPanelUnload::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionCargoPanelUnload)
  size_t total_size = 0;

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

  // optional int32 unit_index = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
        this->_internal_unit_index());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionCargoPanelUnload::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionCargoPanelUnload)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionCargoPanelUnload* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionCargoPanelUnload>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionCargoPanelUnload)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionCargoPanelUnload)
    MergeFrom(*source);
  }
}

void ActionCargoPanelUnload::MergeFrom(const ActionCargoPanelUnload& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionCargoPanelUnload)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_unit_index()) {
    _internal_set_unit_index(from._internal_unit_index());
  }
}

void ActionCargoPanelUnload::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionCargoPanelUnload)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionCargoPanelUnload::InternalSwap(ActionCargoPanelUnload* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(unit_index_, other->unit_index_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionCargoPanelUnload::GetMetadata() const {
  return GetMetadataStatic();
}


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

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

ActionProductionPanelRemoveFromQueue::ActionProductionPanelRemoveFromQueue()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
}
ActionProductionPanelRemoveFromQueue::ActionProductionPanelRemoveFromQueue(const ActionProductionPanelRemoveFromQueue& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  unit_index_ = from.unit_index_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
}

void ActionProductionPanelRemoveFromQueue::SharedCtor() {
  unit_index_ = 0;
}

ActionProductionPanelRemoveFromQueue::~ActionProductionPanelRemoveFromQueue() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
  SharedDtor();
}

void ActionProductionPanelRemoveFromQueue::SharedDtor() {
}

void ActionProductionPanelRemoveFromQueue::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionProductionPanelRemoveFromQueue& ActionProductionPanelRemoveFromQueue::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionProductionPanelRemoveFromQueue_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionProductionPanelRemoveFromQueue::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  unit_index_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionProductionPanelRemoveFromQueue::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional int32 unit_index = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_unit_index(&has_bits);
          unit_index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionProductionPanelRemoveFromQueue::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
  return target;
}

size_t ActionProductionPanelRemoveFromQueue::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
  size_t total_size = 0;

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

  // optional int32 unit_index = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
        this->_internal_unit_index());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionProductionPanelRemoveFromQueue::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionProductionPanelRemoveFromQueue* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionProductionPanelRemoveFromQueue>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
    MergeFrom(*source);
  }
}

void ActionProductionPanelRemoveFromQueue::MergeFrom(const ActionProductionPanelRemoveFromQueue& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_unit_index()) {
    _internal_set_unit_index(from._internal_unit_index());
  }
}

void ActionProductionPanelRemoveFromQueue::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionProductionPanelRemoveFromQueue)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionProductionPanelRemoveFromQueue::InternalSwap(ActionProductionPanelRemoveFromQueue* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(unit_index_, other->unit_index_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionProductionPanelRemoveFromQueue::GetMetadata() const {
  return GetMetadataStatic();
}


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

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

ActionToggleAutocast::ActionToggleAutocast()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ActionToggleAutocast)
}
ActionToggleAutocast::ActionToggleAutocast(const ActionToggleAutocast& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ability_id_ = from.ability_id_;
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ActionToggleAutocast)
}

void ActionToggleAutocast::SharedCtor() {
  ability_id_ = 0;
}

ActionToggleAutocast::~ActionToggleAutocast() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ActionToggleAutocast)
  SharedDtor();
}

void ActionToggleAutocast::SharedDtor() {
}

void ActionToggleAutocast::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ActionToggleAutocast& ActionToggleAutocast::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ActionToggleAutocast_s2clientprotocol_2fui_2eproto.base);
  return *internal_default_instance();
}


void ActionToggleAutocast::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ActionToggleAutocast)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ability_id_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ActionToggleAutocast::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional int32 ability_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_ability_id(&has_bits);
          ability_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ActionToggleAutocast::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ActionToggleAutocast)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

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

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ActionToggleAutocast)
  return target;
}

size_t ActionToggleAutocast::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ActionToggleAutocast)
  size_t total_size = 0;

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

  // optional int32 ability_id = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
        this->_internal_ability_id());
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ActionToggleAutocast::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ActionToggleAutocast)
  GOOGLE_DCHECK_NE(&from, this);
  const ActionToggleAutocast* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ActionToggleAutocast>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ActionToggleAutocast)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ActionToggleAutocast)
    MergeFrom(*source);
  }
}

void ActionToggleAutocast::MergeFrom(const ActionToggleAutocast& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ActionToggleAutocast)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_ability_id()) {
    _internal_set_ability_id(from._internal_ability_id());
  }
}

void ActionToggleAutocast::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ActionToggleAutocast)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

void ActionToggleAutocast::InternalSwap(ActionToggleAutocast* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(ability_id_, other->ability_id_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ActionToggleAutocast::GetMetadata() const {
  return GetMetadataStatic();
}


// @@protoc_insertion_point(namespace_scope)
}  // namespace SC2APIProtocol
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ObservationUI* Arena::CreateMaybeMessage< ::SC2APIProtocol::ObservationUI >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ObservationUI >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ControlGroup* Arena::CreateMaybeMessage< ::SC2APIProtocol::ControlGroup >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ControlGroup >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::UnitInfo* Arena::CreateMaybeMessage< ::SC2APIProtocol::UnitInfo >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::UnitInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::SinglePanel* Arena::CreateMaybeMessage< ::SC2APIProtocol::SinglePanel >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::SinglePanel >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::MultiPanel* Arena::CreateMaybeMessage< ::SC2APIProtocol::MultiPanel >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::MultiPanel >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::CargoPanel* Arena::CreateMaybeMessage< ::SC2APIProtocol::CargoPanel >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::CargoPanel >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::BuildItem* Arena::CreateMaybeMessage< ::SC2APIProtocol::BuildItem >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::BuildItem >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ProductionPanel* Arena::CreateMaybeMessage< ::SC2APIProtocol::ProductionPanel >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ProductionPanel >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionUI* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionUI >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionUI >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionControlGroup* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionControlGroup >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionControlGroup >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionSelectArmy* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionSelectArmy >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionSelectArmy >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionSelectWarpGates* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionSelectWarpGates >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionSelectWarpGates >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionSelectLarva* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionSelectLarva >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionSelectLarva >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionSelectIdleWorker* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionSelectIdleWorker >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionSelectIdleWorker >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionMultiPanel* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionMultiPanel >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionMultiPanel >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionCargoPanelUnload* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionCargoPanelUnload >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionCargoPanelUnload >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionProductionPanelRemoveFromQueue >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ActionToggleAutocast* Arena::CreateMaybeMessage< ::SC2APIProtocol::ActionToggleAutocast >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ActionToggleAutocast >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

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