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

#include "Cura.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>

PROTOBUF_PRAGMA_INIT_SEG
namespace cura {
namespace proto {
constexpr ObjectList::ObjectList(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : objects_()
  , settings_(){}
struct ObjectListDefaultTypeInternal {
  constexpr ObjectListDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ObjectListDefaultTypeInternal() {}
  union {
    ObjectList _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ObjectListDefaultTypeInternal _ObjectList_default_instance_;
constexpr Slice::Slice(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : object_lists_()
  , extruders_()
  , limit_to_extruder_()
  , global_settings_(nullptr){}
struct SliceDefaultTypeInternal {
  constexpr SliceDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SliceDefaultTypeInternal() {}
  union {
    Slice _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SliceDefaultTypeInternal _Slice_default_instance_;
constexpr Extruder::Extruder(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : settings_(nullptr)
  , id_(0){}
struct ExtruderDefaultTypeInternal {
  constexpr ExtruderDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ExtruderDefaultTypeInternal() {}
  union {
    Extruder _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ExtruderDefaultTypeInternal _Extruder_default_instance_;
constexpr Object::Object(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : settings_()
  , vertices_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , normals_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , indices_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , name_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , id_(int64_t{0}){}
struct ObjectDefaultTypeInternal {
  constexpr ObjectDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ObjectDefaultTypeInternal() {}
  union {
    Object _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ObjectDefaultTypeInternal _Object_default_instance_;
constexpr Progress::Progress(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : amount_(0){}
struct ProgressDefaultTypeInternal {
  constexpr ProgressDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~ProgressDefaultTypeInternal() {}
  union {
    Progress _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT ProgressDefaultTypeInternal _Progress_default_instance_;
constexpr Layer::Layer(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : polygons_()
  , id_(0)
  , height_(0)
  , thickness_(0){}
struct LayerDefaultTypeInternal {
  constexpr LayerDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~LayerDefaultTypeInternal() {}
  union {
    Layer _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT LayerDefaultTypeInternal _Layer_default_instance_;
constexpr Polygon::Polygon(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : points_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , type_(0)

  , line_width_(0)
  , line_thickness_(0)
  , line_feedrate_(0){}
struct PolygonDefaultTypeInternal {
  constexpr PolygonDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~PolygonDefaultTypeInternal() {}
  union {
    Polygon _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PolygonDefaultTypeInternal _Polygon_default_instance_;
constexpr LayerOptimized::LayerOptimized(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : path_segment_()
  , id_(0)
  , height_(0)
  , thickness_(0){}
struct LayerOptimizedDefaultTypeInternal {
  constexpr LayerOptimizedDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~LayerOptimizedDefaultTypeInternal() {}
  union {
    LayerOptimized _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT LayerOptimizedDefaultTypeInternal _LayerOptimized_default_instance_;
constexpr PathSegment::PathSegment(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : points_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , line_type_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , line_width_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , line_thickness_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , line_feedrate_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , extruder_(0)
  , point_type_(0)
{}
struct PathSegmentDefaultTypeInternal {
  constexpr PathSegmentDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~PathSegmentDefaultTypeInternal() {}
  union {
    PathSegment _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PathSegmentDefaultTypeInternal _PathSegment_default_instance_;
constexpr GCodeLayer::GCodeLayer(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : data_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct GCodeLayerDefaultTypeInternal {
  constexpr GCodeLayerDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~GCodeLayerDefaultTypeInternal() {}
  union {
    GCodeLayer _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT GCodeLayerDefaultTypeInternal _GCodeLayer_default_instance_;
constexpr PrintTimeMaterialEstimates::PrintTimeMaterialEstimates(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : materialestimates_()
  , time_none_(0)
  , time_inset_0_(0)
  , time_inset_x_(0)
  , time_skin_(0)
  , time_support_(0)
  , time_skirt_(0)
  , time_infill_(0)
  , time_support_infill_(0)
  , time_travel_(0)
  , time_retract_(0)
  , time_support_interface_(0)
  , time_prime_tower_(0){}
struct PrintTimeMaterialEstimatesDefaultTypeInternal {
  constexpr PrintTimeMaterialEstimatesDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~PrintTimeMaterialEstimatesDefaultTypeInternal() {}
  union {
    PrintTimeMaterialEstimates _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PrintTimeMaterialEstimatesDefaultTypeInternal _PrintTimeMaterialEstimates_default_instance_;
constexpr MaterialEstimates::MaterialEstimates(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : id_(int64_t{0})
  , material_amount_(0){}
struct MaterialEstimatesDefaultTypeInternal {
  constexpr MaterialEstimatesDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~MaterialEstimatesDefaultTypeInternal() {}
  union {
    MaterialEstimates _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT MaterialEstimatesDefaultTypeInternal _MaterialEstimates_default_instance_;
constexpr SettingList::SettingList(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : settings_(){}
struct SettingListDefaultTypeInternal {
  constexpr SettingListDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SettingListDefaultTypeInternal() {}
  union {
    SettingList _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SettingListDefaultTypeInternal _SettingList_default_instance_;
constexpr Setting::Setting(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : name_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , value_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct SettingDefaultTypeInternal {
  constexpr SettingDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SettingDefaultTypeInternal() {}
  union {
    Setting _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SettingDefaultTypeInternal _Setting_default_instance_;
constexpr SettingExtruder::SettingExtruder(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : name_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
  , extruder_(0){}
struct SettingExtruderDefaultTypeInternal {
  constexpr SettingExtruderDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SettingExtruderDefaultTypeInternal() {}
  union {
    SettingExtruder _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SettingExtruderDefaultTypeInternal _SettingExtruder_default_instance_;
constexpr GCodePrefix::GCodePrefix(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
  : data_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string){}
struct GCodePrefixDefaultTypeInternal {
  constexpr GCodePrefixDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~GCodePrefixDefaultTypeInternal() {}
  union {
    GCodePrefix _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT GCodePrefixDefaultTypeInternal _GCodePrefix_default_instance_;
constexpr SlicingFinished::SlicingFinished(
  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized){}
struct SlicingFinishedDefaultTypeInternal {
  constexpr SlicingFinishedDefaultTypeInternal()
    : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
  ~SlicingFinishedDefaultTypeInternal() {}
  union {
    SlicingFinished _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT SlicingFinishedDefaultTypeInternal _SlicingFinished_default_instance_;
}  // namespace proto
}  // namespace cura
static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_Cura_2eproto[17];
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_Cura_2eproto[2];
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_Cura_2eproto = nullptr;

const uint32_t TableStruct_Cura_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::ObjectList, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::ObjectList, objects_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::ObjectList, settings_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Slice, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Slice, object_lists_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Slice, global_settings_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Slice, extruders_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Slice, limit_to_extruder_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Extruder, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Extruder, id_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Extruder, settings_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Object, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Object, id_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Object, vertices_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Object, normals_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Object, indices_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Object, settings_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Object, name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Progress, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Progress, amount_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Layer, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Layer, id_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Layer, height_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Layer, thickness_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Layer, polygons_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Polygon, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Polygon, type_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Polygon, points_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Polygon, line_width_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Polygon, line_thickness_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Polygon, line_feedrate_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::LayerOptimized, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::LayerOptimized, id_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::LayerOptimized, height_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::LayerOptimized, thickness_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::LayerOptimized, path_segment_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::PathSegment, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::PathSegment, extruder_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PathSegment, point_type_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PathSegment, points_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PathSegment, line_type_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PathSegment, line_width_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PathSegment, line_thickness_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PathSegment, line_feedrate_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::GCodeLayer, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::GCodeLayer, data_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_none_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_inset_0_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_inset_x_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_skin_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_support_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_skirt_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_infill_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_support_infill_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_travel_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_retract_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_support_interface_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, time_prime_tower_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::PrintTimeMaterialEstimates, materialestimates_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::MaterialEstimates, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::MaterialEstimates, id_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::MaterialEstimates, material_amount_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::SettingList, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::SettingList, settings_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Setting, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::Setting, name_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::Setting, value_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::SettingExtruder, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::SettingExtruder, name_),
  PROTOBUF_FIELD_OFFSET(::cura::proto::SettingExtruder, extruder_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::GCodePrefix, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::cura::proto::GCodePrefix, data_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::cura::proto::SlicingFinished, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::cura::proto::ObjectList)},
  { 8, -1, -1, sizeof(::cura::proto::Slice)},
  { 18, -1, -1, sizeof(::cura::proto::Extruder)},
  { 26, -1, -1, sizeof(::cura::proto::Object)},
  { 38, -1, -1, sizeof(::cura::proto::Progress)},
  { 45, -1, -1, sizeof(::cura::proto::Layer)},
  { 55, -1, -1, sizeof(::cura::proto::Polygon)},
  { 66, -1, -1, sizeof(::cura::proto::LayerOptimized)},
  { 76, -1, -1, sizeof(::cura::proto::PathSegment)},
  { 89, -1, -1, sizeof(::cura::proto::GCodeLayer)},
  { 96, -1, -1, sizeof(::cura::proto::PrintTimeMaterialEstimates)},
  { 115, -1, -1, sizeof(::cura::proto::MaterialEstimates)},
  { 123, -1, -1, sizeof(::cura::proto::SettingList)},
  { 130, -1, -1, sizeof(::cura::proto::Setting)},
  { 138, -1, -1, sizeof(::cura::proto::SettingExtruder)},
  { 146, -1, -1, sizeof(::cura::proto::GCodePrefix)},
  { 153, -1, -1, sizeof(::cura::proto::SlicingFinished)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_ObjectList_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_Slice_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_Extruder_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_Object_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_Progress_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_Layer_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_Polygon_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_LayerOptimized_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_PathSegment_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_GCodeLayer_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_PrintTimeMaterialEstimates_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_MaterialEstimates_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_SettingList_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_Setting_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_SettingExtruder_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_GCodePrefix_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::cura::proto::_SlicingFinished_default_instance_),
};

const char descriptor_table_protodef_Cura_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\nCura.proto\022\ncura.proto\"X\n\nObjectList\022#"
  "\n\007objects\030\001 \003(\0132\022.cura.proto.Object\022%\n\010s"
  "ettings\030\002 \003(\0132\023.cura.proto.Setting\"\310\001\n\005S"
  "lice\022,\n\014object_lists\030\001 \003(\0132\026.cura.proto."
  "ObjectList\0220\n\017global_settings\030\002 \001(\0132\027.cu"
  "ra.proto.SettingList\022\'\n\textruders\030\003 \003(\0132"
  "\024.cura.proto.Extruder\0226\n\021limit_to_extrud"
  "er\030\004 \003(\0132\033.cura.proto.SettingExtruder\"A\n"
  "\010Extruder\022\n\n\002id\030\001 \001(\005\022)\n\010settings\030\002 \001(\0132"
  "\027.cura.proto.SettingList\"}\n\006Object\022\n\n\002id"
  "\030\001 \001(\003\022\020\n\010vertices\030\002 \001(\014\022\017\n\007normals\030\003 \001("
  "\014\022\017\n\007indices\030\004 \001(\014\022%\n\010settings\030\005 \003(\0132\023.c"
  "ura.proto.Setting\022\014\n\004name\030\006 \001(\t\"\032\n\010Progr"
  "ess\022\016\n\006amount\030\001 \001(\002\"]\n\005Layer\022\n\n\002id\030\001 \001(\005"
  "\022\016\n\006height\030\002 \001(\002\022\021\n\tthickness\030\003 \001(\002\022%\n\010p"
  "olygons\030\004 \003(\0132\023.cura.proto.Polygon\"\353\002\n\007P"
  "olygon\022&\n\004type\030\001 \001(\0162\030.cura.proto.Polygo"
  "n.Type\022\016\n\006points\030\002 \001(\014\022\022\n\nline_width\030\003 \001"
  "(\002\022\026\n\016line_thickness\030\004 \001(\002\022\025\n\rline_feedr"
  "ate\030\005 \001(\002\"\344\001\n\004Type\022\014\n\010NoneType\020\000\022\016\n\nInse"
  "t0Type\020\001\022\016\n\nInsetXType\020\002\022\014\n\010SkinType\020\003\022\017"
  "\n\013SupportType\020\004\022\r\n\tSkirtType\020\005\022\016\n\nInfill"
  "Type\020\006\022\025\n\021SupportInfillType\020\007\022\023\n\017MoveCom"
  "bingType\020\010\022\026\n\022MoveRetractionType\020\t\022\030\n\024Su"
  "pportInterfaceType\020\n\022\022\n\016PrimeTowerType\020\013"
  "\"n\n\016LayerOptimized\022\n\n\002id\030\001 \001(\005\022\016\n\006height"
  "\030\002 \001(\002\022\021\n\tthickness\030\003 \001(\002\022-\n\014path_segmen"
  "t\030\004 \003(\0132\027.cura.proto.PathSegment\"\343\001\n\013Pat"
  "hSegment\022\020\n\010extruder\030\001 \001(\005\0225\n\npoint_type"
  "\030\002 \001(\0162!.cura.proto.PathSegment.PointTyp"
  "e\022\016\n\006points\030\003 \001(\014\022\021\n\tline_type\030\004 \001(\014\022\022\n\n"
  "line_width\030\005 \001(\014\022\026\n\016line_thickness\030\006 \001(\014"
  "\022\025\n\rline_feedrate\030\007 \001(\014\"%\n\tPointType\022\013\n\007"
  "Point2D\020\000\022\013\n\007Point3D\020\001\"\032\n\nGCodeLayer\022\014\n\004"
  "data\030\002 \001(\014\"\351\002\n\032PrintTimeMaterialEstimate"
  "s\022\021\n\ttime_none\030\001 \001(\002\022\024\n\014time_inset_0\030\002 \001"
  "(\002\022\024\n\014time_inset_x\030\003 \001(\002\022\021\n\ttime_skin\030\004 "
  "\001(\002\022\024\n\014time_support\030\005 \001(\002\022\022\n\ntime_skirt\030"
  "\006 \001(\002\022\023\n\013time_infill\030\007 \001(\002\022\033\n\023time_suppo"
  "rt_infill\030\010 \001(\002\022\023\n\013time_travel\030\t \001(\002\022\024\n\014"
  "time_retract\030\n \001(\002\022\036\n\026time_support_inter"
  "face\030\013 \001(\002\022\030\n\020time_prime_tower\030\014 \001(\002\0228\n\021"
  "materialEstimates\030\r \003(\0132\035.cura.proto.Mat"
  "erialEstimates\"8\n\021MaterialEstimates\022\n\n\002i"
  "d\030\001 \001(\003\022\027\n\017material_amount\030\002 \001(\002\"4\n\013Sett"
  "ingList\022%\n\010settings\030\001 \003(\0132\023.cura.proto.S"
  "etting\"&\n\007Setting\022\014\n\004name\030\001 \001(\t\022\r\n\005value"
  "\030\002 \001(\014\"1\n\017SettingExtruder\022\014\n\004name\030\001 \001(\t\022"
  "\020\n\010extruder\030\002 \001(\005\"\033\n\013GCodePrefix\022\014\n\004data"
  "\030\002 \001(\014\"\021\n\017SlicingFinishedb\006proto3"
  ;
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_Cura_2eproto_once;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_Cura_2eproto = {
  false, false, 1993, descriptor_table_protodef_Cura_2eproto, "Cura.proto", 
  &descriptor_table_Cura_2eproto_once, nullptr, 0, 17,
  schemas, file_default_instances, TableStruct_Cura_2eproto::offsets,
  file_level_metadata_Cura_2eproto, file_level_enum_descriptors_Cura_2eproto, file_level_service_descriptors_Cura_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_Cura_2eproto_getter() {
  return &descriptor_table_Cura_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_Cura_2eproto(&descriptor_table_Cura_2eproto);
namespace cura {
namespace proto {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Polygon_Type_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_Cura_2eproto);
  return file_level_enum_descriptors_Cura_2eproto[0];
}
bool Polygon_Type_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr Polygon_Type Polygon::NoneType;
constexpr Polygon_Type Polygon::Inset0Type;
constexpr Polygon_Type Polygon::InsetXType;
constexpr Polygon_Type Polygon::SkinType;
constexpr Polygon_Type Polygon::SupportType;
constexpr Polygon_Type Polygon::SkirtType;
constexpr Polygon_Type Polygon::InfillType;
constexpr Polygon_Type Polygon::SupportInfillType;
constexpr Polygon_Type Polygon::MoveCombingType;
constexpr Polygon_Type Polygon::MoveRetractionType;
constexpr Polygon_Type Polygon::SupportInterfaceType;
constexpr Polygon_Type Polygon::PrimeTowerType;
constexpr Polygon_Type Polygon::Type_MIN;
constexpr Polygon_Type Polygon::Type_MAX;
constexpr int Polygon::Type_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PathSegment_PointType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_Cura_2eproto);
  return file_level_enum_descriptors_Cura_2eproto[1];
}
bool PathSegment_PointType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr PathSegment_PointType PathSegment::Point2D;
constexpr PathSegment_PointType PathSegment::Point3D;
constexpr PathSegment_PointType PathSegment::PointType_MIN;
constexpr PathSegment_PointType PathSegment::PointType_MAX;
constexpr int PathSegment::PointType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

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

class ObjectList::_Internal {
 public:
};

ObjectList::ObjectList(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  objects_(arena),
  settings_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.ObjectList)
}
ObjectList::ObjectList(const ObjectList& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      objects_(from.objects_),
      settings_(from.settings_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:cura.proto.ObjectList)
}

inline void ObjectList::SharedCtor() {
}

ObjectList::~ObjectList() {
  // @@protoc_insertion_point(destructor:cura.proto.ObjectList)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

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

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

void ObjectList::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.ObjectList)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  objects_.Clear();
  settings_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ObjectList::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .cura.proto.Object objects = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_objects(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .cura.proto.Setting settings = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_settings(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ObjectList::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.ObjectList)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .cura.proto.Object objects = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_objects_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_objects(i), target, stream);
  }

  // repeated .cura.proto.Setting settings = 2;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_settings_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, this->_internal_settings(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.ObjectList)
  return target;
}

size_t ObjectList::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.ObjectList)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .cura.proto.Object objects = 1;
  total_size += 1UL * this->_internal_objects_size();
  for (const auto& msg : this->objects_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .cura.proto.Setting settings = 2;
  total_size += 1UL * this->_internal_settings_size();
  for (const auto& msg : this->settings_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ObjectList::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    ObjectList::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ObjectList::GetClassData() const { return &_class_data_; }

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


void ObjectList::MergeFrom(const ObjectList& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.ObjectList)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  objects_.MergeFrom(from.objects_);
  settings_.MergeFrom(from.settings_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void ObjectList::InternalSwap(ObjectList* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  objects_.InternalSwap(&other->objects_);
  settings_.InternalSwap(&other->settings_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ObjectList::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[0]);
}

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

class Slice::_Internal {
 public:
  static const ::cura::proto::SettingList& global_settings(const Slice* msg);
};

const ::cura::proto::SettingList&
Slice::_Internal::global_settings(const Slice* msg) {
  return *msg->global_settings_;
}
Slice::Slice(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  object_lists_(arena),
  extruders_(arena),
  limit_to_extruder_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.Slice)
}
Slice::Slice(const Slice& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      object_lists_(from.object_lists_),
      extruders_(from.extruders_),
      limit_to_extruder_(from.limit_to_extruder_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_global_settings()) {
    global_settings_ = new ::cura::proto::SettingList(*from.global_settings_);
  } else {
    global_settings_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:cura.proto.Slice)
}

inline void Slice::SharedCtor() {
global_settings_ = nullptr;
}

Slice::~Slice() {
  // @@protoc_insertion_point(destructor:cura.proto.Slice)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

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

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

void Slice::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.Slice)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  object_lists_.Clear();
  extruders_.Clear();
  limit_to_extruder_.Clear();
  if (GetArenaForAllocation() == nullptr && global_settings_ != nullptr) {
    delete global_settings_;
  }
  global_settings_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Slice::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .cura.proto.ObjectList object_lists = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_object_lists(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .cura.proto.SettingList global_settings = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_global_settings(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .cura.proto.Extruder extruders = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_extruders(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .cura.proto.SettingExtruder limit_to_extruder = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_limit_to_extruder(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Slice::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.Slice)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .cura.proto.ObjectList object_lists = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_object_lists_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_object_lists(i), target, stream);
  }

  // .cura.proto.SettingList global_settings = 2;
  if (this->_internal_has_global_settings()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::global_settings(this), target, stream);
  }

  // repeated .cura.proto.Extruder extruders = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_extruders_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, this->_internal_extruders(i), target, stream);
  }

  // repeated .cura.proto.SettingExtruder limit_to_extruder = 4;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_limit_to_extruder_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, this->_internal_limit_to_extruder(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.Slice)
  return target;
}

size_t Slice::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.Slice)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .cura.proto.ObjectList object_lists = 1;
  total_size += 1UL * this->_internal_object_lists_size();
  for (const auto& msg : this->object_lists_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .cura.proto.Extruder extruders = 3;
  total_size += 1UL * this->_internal_extruders_size();
  for (const auto& msg : this->extruders_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .cura.proto.SettingExtruder limit_to_extruder = 4;
  total_size += 1UL * this->_internal_limit_to_extruder_size();
  for (const auto& msg : this->limit_to_extruder_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // .cura.proto.SettingList global_settings = 2;
  if (this->_internal_has_global_settings()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *global_settings_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Slice::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Slice::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Slice::GetClassData() const { return &_class_data_; }

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


void Slice::MergeFrom(const Slice& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.Slice)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  object_lists_.MergeFrom(from.object_lists_);
  extruders_.MergeFrom(from.extruders_);
  limit_to_extruder_.MergeFrom(from.limit_to_extruder_);
  if (from._internal_has_global_settings()) {
    _internal_mutable_global_settings()->::cura::proto::SettingList::MergeFrom(from._internal_global_settings());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Slice::InternalSwap(Slice* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  object_lists_.InternalSwap(&other->object_lists_);
  extruders_.InternalSwap(&other->extruders_);
  limit_to_extruder_.InternalSwap(&other->limit_to_extruder_);
  swap(global_settings_, other->global_settings_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Slice::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[1]);
}

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

class Extruder::_Internal {
 public:
  static const ::cura::proto::SettingList& settings(const Extruder* msg);
};

const ::cura::proto::SettingList&
Extruder::_Internal::settings(const Extruder* msg) {
  return *msg->settings_;
}
Extruder::Extruder(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.Extruder)
}
Extruder::Extruder(const Extruder& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_settings()) {
    settings_ = new ::cura::proto::SettingList(*from.settings_);
  } else {
    settings_ = nullptr;
  }
  id_ = from.id_;
  // @@protoc_insertion_point(copy_constructor:cura.proto.Extruder)
}

inline void Extruder::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&settings_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&id_) -
    reinterpret_cast<char*>(&settings_)) + sizeof(id_));
}

Extruder::~Extruder() {
  // @@protoc_insertion_point(destructor:cura.proto.Extruder)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

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

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

void Extruder::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.Extruder)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && settings_ != nullptr) {
    delete settings_;
  }
  settings_ = nullptr;
  id_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Extruder::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .cura.proto.SettingList settings = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_settings(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Extruder::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.Extruder)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 id = 1;
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_id(), target);
  }

  // .cura.proto.SettingList settings = 2;
  if (this->_internal_has_settings()) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::settings(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.Extruder)
  return target;
}

size_t Extruder::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.Extruder)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .cura.proto.SettingList settings = 2;
  if (this->_internal_has_settings()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *settings_);
  }

  // int32 id = 1;
  if (this->_internal_id() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_id());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Extruder::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Extruder::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Extruder::GetClassData() const { return &_class_data_; }

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


void Extruder::MergeFrom(const Extruder& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.Extruder)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_settings()) {
    _internal_mutable_settings()->::cura::proto::SettingList::MergeFrom(from._internal_settings());
  }
  if (from._internal_id() != 0) {
    _internal_set_id(from._internal_id());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Extruder::InternalSwap(Extruder* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Extruder, id_)
      + sizeof(Extruder::id_)
      - PROTOBUF_FIELD_OFFSET(Extruder, settings_)>(
          reinterpret_cast<char*>(&settings_),
          reinterpret_cast<char*>(&other->settings_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Extruder::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[2]);
}

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

class Object::_Internal {
 public:
};

Object::Object(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  settings_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.Object)
}
Object::Object(const Object& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      settings_(from.settings_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  vertices_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    vertices_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_vertices().empty()) {
    vertices_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_vertices(), 
      GetArenaForAllocation());
  }
  normals_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    normals_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_normals().empty()) {
    normals_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_normals(), 
      GetArenaForAllocation());
  }
  indices_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    indices_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_indices().empty()) {
    indices_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_indices(), 
      GetArenaForAllocation());
  }
  name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  id_ = from.id_;
  // @@protoc_insertion_point(copy_constructor:cura.proto.Object)
}

inline void Object::SharedCtor() {
vertices_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  vertices_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
normals_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  normals_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
indices_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  indices_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
id_ = int64_t{0};
}

Object::~Object() {
  // @@protoc_insertion_point(destructor:cura.proto.Object)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Object::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  vertices_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  normals_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  indices_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void Object::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.Object)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  settings_.Clear();
  vertices_.ClearToEmpty();
  normals_.ClearToEmpty();
  indices_.ClearToEmpty();
  name_.ClearToEmpty();
  id_ = int64_t{0};
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Object::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int64 id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes vertices = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_vertices();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes normals = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_normals();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes indices = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_indices();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .cura.proto.Setting settings = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_settings(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr));
        } else
          goto handle_unusual;
        continue;
      // string name = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          auto str = _internal_mutable_name();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cura.proto.Object.name"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Object::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.Object)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 id = 1;
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_id(), target);
  }

  // bytes vertices = 2;
  if (!this->_internal_vertices().empty()) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_vertices(), target);
  }

  // bytes normals = 3;
  if (!this->_internal_normals().empty()) {
    target = stream->WriteBytesMaybeAliased(
        3, this->_internal_normals(), target);
  }

  // bytes indices = 4;
  if (!this->_internal_indices().empty()) {
    target = stream->WriteBytesMaybeAliased(
        4, this->_internal_indices(), target);
  }

  // repeated .cura.proto.Setting settings = 5;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_settings_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, this->_internal_settings(i), target, stream);
  }

  // string name = 6;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "cura.proto.Object.name");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.Object)
  return target;
}

size_t Object::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.Object)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .cura.proto.Setting settings = 5;
  total_size += 1UL * this->_internal_settings_size();
  for (const auto& msg : this->settings_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // bytes vertices = 2;
  if (!this->_internal_vertices().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_vertices());
  }

  // bytes normals = 3;
  if (!this->_internal_normals().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_normals());
  }

  // bytes indices = 4;
  if (!this->_internal_indices().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_indices());
  }

  // string name = 6;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // int64 id = 1;
  if (this->_internal_id() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_id());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Object::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Object::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Object::GetClassData() const { return &_class_data_; }

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


void Object::MergeFrom(const Object& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.Object)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  settings_.MergeFrom(from.settings_);
  if (!from._internal_vertices().empty()) {
    _internal_set_vertices(from._internal_vertices());
  }
  if (!from._internal_normals().empty()) {
    _internal_set_normals(from._internal_normals());
  }
  if (!from._internal_indices().empty()) {
    _internal_set_indices(from._internal_indices());
  }
  if (!from._internal_name().empty()) {
    _internal_set_name(from._internal_name());
  }
  if (from._internal_id() != 0) {
    _internal_set_id(from._internal_id());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Object::InternalSwap(Object* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  settings_.InternalSwap(&other->settings_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &vertices_, lhs_arena,
      &other->vertices_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &normals_, lhs_arena,
      &other->normals_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &indices_, lhs_arena,
      &other->indices_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  swap(id_, other->id_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Object::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[3]);
}

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

class Progress::_Internal {
 public:
};

Progress::Progress(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.Progress)
}
Progress::Progress(const Progress& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  amount_ = from.amount_;
  // @@protoc_insertion_point(copy_constructor:cura.proto.Progress)
}

inline void Progress::SharedCtor() {
amount_ = 0;
}

Progress::~Progress() {
  // @@protoc_insertion_point(destructor:cura.proto.Progress)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

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

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

void Progress::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.Progress)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  amount_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Progress::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float amount = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          amount_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Progress::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.Progress)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float amount = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_amount = this->_internal_amount();
  uint32_t raw_amount;
  memcpy(&raw_amount, &tmp_amount, sizeof(tmp_amount));
  if (raw_amount != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(1, this->_internal_amount(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.Progress)
  return target;
}

size_t Progress::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.Progress)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // float amount = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_amount = this->_internal_amount();
  uint32_t raw_amount;
  memcpy(&raw_amount, &tmp_amount, sizeof(tmp_amount));
  if (raw_amount != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Progress::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Progress::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Progress::GetClassData() const { return &_class_data_; }

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


void Progress::MergeFrom(const Progress& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.Progress)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_amount = from._internal_amount();
  uint32_t raw_amount;
  memcpy(&raw_amount, &tmp_amount, sizeof(tmp_amount));
  if (raw_amount != 0) {
    _internal_set_amount(from._internal_amount());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Progress::InternalSwap(Progress* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(amount_, other->amount_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Progress::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[4]);
}

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

class Layer::_Internal {
 public:
};

Layer::Layer(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  polygons_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.Layer)
}
Layer::Layer(const Layer& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      polygons_(from.polygons_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&id_, &from.id_,
    static_cast<size_t>(reinterpret_cast<char*>(&thickness_) -
    reinterpret_cast<char*>(&id_)) + sizeof(thickness_));
  // @@protoc_insertion_point(copy_constructor:cura.proto.Layer)
}

inline void Layer::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&id_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&thickness_) -
    reinterpret_cast<char*>(&id_)) + sizeof(thickness_));
}

Layer::~Layer() {
  // @@protoc_insertion_point(destructor:cura.proto.Layer)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

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

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

void Layer::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.Layer)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  polygons_.Clear();
  ::memset(&id_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&thickness_) -
      reinterpret_cast<char*>(&id_)) + sizeof(thickness_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Layer::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float height = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          height_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float thickness = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          thickness_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated .cura.proto.Polygon polygons = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_polygons(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Layer::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.Layer)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 id = 1;
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_id(), target);
  }

  // float height = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = this->_internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(2, this->_internal_height(), target);
  }

  // float thickness = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_thickness = this->_internal_thickness();
  uint32_t raw_thickness;
  memcpy(&raw_thickness, &tmp_thickness, sizeof(tmp_thickness));
  if (raw_thickness != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(3, this->_internal_thickness(), target);
  }

  // repeated .cura.proto.Polygon polygons = 4;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_polygons_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, this->_internal_polygons(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.Layer)
  return target;
}

size_t Layer::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.Layer)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .cura.proto.Polygon polygons = 4;
  total_size += 1UL * this->_internal_polygons_size();
  for (const auto& msg : this->polygons_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // int32 id = 1;
  if (this->_internal_id() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_id());
  }

  // float height = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = this->_internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    total_size += 1 + 4;
  }

  // float thickness = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_thickness = this->_internal_thickness();
  uint32_t raw_thickness;
  memcpy(&raw_thickness, &tmp_thickness, sizeof(tmp_thickness));
  if (raw_thickness != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Layer::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Layer::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Layer::GetClassData() const { return &_class_data_; }

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


void Layer::MergeFrom(const Layer& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.Layer)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  polygons_.MergeFrom(from.polygons_);
  if (from._internal_id() != 0) {
    _internal_set_id(from._internal_id());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = from._internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    _internal_set_height(from._internal_height());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_thickness = from._internal_thickness();
  uint32_t raw_thickness;
  memcpy(&raw_thickness, &tmp_thickness, sizeof(tmp_thickness));
  if (raw_thickness != 0) {
    _internal_set_thickness(from._internal_thickness());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Layer::InternalSwap(Layer* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  polygons_.InternalSwap(&other->polygons_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Layer, thickness_)
      + sizeof(Layer::thickness_)
      - PROTOBUF_FIELD_OFFSET(Layer, id_)>(
          reinterpret_cast<char*>(&id_),
          reinterpret_cast<char*>(&other->id_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Layer::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[5]);
}

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

class Polygon::_Internal {
 public:
};

Polygon::Polygon(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.Polygon)
}
Polygon::Polygon(const Polygon& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  points_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    points_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_points().empty()) {
    points_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_points(), 
      GetArenaForAllocation());
  }
  ::memcpy(&type_, &from.type_,
    static_cast<size_t>(reinterpret_cast<char*>(&line_feedrate_) -
    reinterpret_cast<char*>(&type_)) + sizeof(line_feedrate_));
  // @@protoc_insertion_point(copy_constructor:cura.proto.Polygon)
}

inline void Polygon::SharedCtor() {
points_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  points_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&type_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&line_feedrate_) -
    reinterpret_cast<char*>(&type_)) + sizeof(line_feedrate_));
}

Polygon::~Polygon() {
  // @@protoc_insertion_point(destructor:cura.proto.Polygon)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Polygon::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  points_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void Polygon::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.Polygon)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  points_.ClearToEmpty();
  ::memset(&type_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&line_feedrate_) -
      reinterpret_cast<char*>(&type_)) + sizeof(line_feedrate_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Polygon::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .cura.proto.Polygon.Type type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::cura::proto::Polygon_Type>(val));
        } else
          goto handle_unusual;
        continue;
      // bytes points = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_points();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float line_width = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          line_width_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float line_thickness = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          line_thickness_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float line_feedrate = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 45)) {
          line_feedrate_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Polygon::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.Polygon)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .cura.proto.Polygon.Type type = 1;
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      1, this->_internal_type(), target);
  }

  // bytes points = 2;
  if (!this->_internal_points().empty()) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_points(), target);
  }

  // float line_width = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_line_width = this->_internal_line_width();
  uint32_t raw_line_width;
  memcpy(&raw_line_width, &tmp_line_width, sizeof(tmp_line_width));
  if (raw_line_width != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(3, this->_internal_line_width(), target);
  }

  // float line_thickness = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_line_thickness = this->_internal_line_thickness();
  uint32_t raw_line_thickness;
  memcpy(&raw_line_thickness, &tmp_line_thickness, sizeof(tmp_line_thickness));
  if (raw_line_thickness != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(4, this->_internal_line_thickness(), target);
  }

  // float line_feedrate = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_line_feedrate = this->_internal_line_feedrate();
  uint32_t raw_line_feedrate;
  memcpy(&raw_line_feedrate, &tmp_line_feedrate, sizeof(tmp_line_feedrate));
  if (raw_line_feedrate != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(5, this->_internal_line_feedrate(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.Polygon)
  return target;
}

size_t Polygon::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.Polygon)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // bytes points = 2;
  if (!this->_internal_points().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_points());
  }

  // .cura.proto.Polygon.Type type = 1;
  if (this->_internal_type() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_type());
  }

  // float line_width = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_line_width = this->_internal_line_width();
  uint32_t raw_line_width;
  memcpy(&raw_line_width, &tmp_line_width, sizeof(tmp_line_width));
  if (raw_line_width != 0) {
    total_size += 1 + 4;
  }

  // float line_thickness = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_line_thickness = this->_internal_line_thickness();
  uint32_t raw_line_thickness;
  memcpy(&raw_line_thickness, &tmp_line_thickness, sizeof(tmp_line_thickness));
  if (raw_line_thickness != 0) {
    total_size += 1 + 4;
  }

  // float line_feedrate = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_line_feedrate = this->_internal_line_feedrate();
  uint32_t raw_line_feedrate;
  memcpy(&raw_line_feedrate, &tmp_line_feedrate, sizeof(tmp_line_feedrate));
  if (raw_line_feedrate != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Polygon::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Polygon::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Polygon::GetClassData() const { return &_class_data_; }

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


void Polygon::MergeFrom(const Polygon& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.Polygon)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_points().empty()) {
    _internal_set_points(from._internal_points());
  }
  if (from._internal_type() != 0) {
    _internal_set_type(from._internal_type());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_line_width = from._internal_line_width();
  uint32_t raw_line_width;
  memcpy(&raw_line_width, &tmp_line_width, sizeof(tmp_line_width));
  if (raw_line_width != 0) {
    _internal_set_line_width(from._internal_line_width());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_line_thickness = from._internal_line_thickness();
  uint32_t raw_line_thickness;
  memcpy(&raw_line_thickness, &tmp_line_thickness, sizeof(tmp_line_thickness));
  if (raw_line_thickness != 0) {
    _internal_set_line_thickness(from._internal_line_thickness());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_line_feedrate = from._internal_line_feedrate();
  uint32_t raw_line_feedrate;
  memcpy(&raw_line_feedrate, &tmp_line_feedrate, sizeof(tmp_line_feedrate));
  if (raw_line_feedrate != 0) {
    _internal_set_line_feedrate(from._internal_line_feedrate());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Polygon::InternalSwap(Polygon* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &points_, lhs_arena,
      &other->points_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Polygon, line_feedrate_)
      + sizeof(Polygon::line_feedrate_)
      - PROTOBUF_FIELD_OFFSET(Polygon, type_)>(
          reinterpret_cast<char*>(&type_),
          reinterpret_cast<char*>(&other->type_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Polygon::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[6]);
}

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

class LayerOptimized::_Internal {
 public:
};

LayerOptimized::LayerOptimized(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  path_segment_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.LayerOptimized)
}
LayerOptimized::LayerOptimized(const LayerOptimized& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      path_segment_(from.path_segment_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&id_, &from.id_,
    static_cast<size_t>(reinterpret_cast<char*>(&thickness_) -
    reinterpret_cast<char*>(&id_)) + sizeof(thickness_));
  // @@protoc_insertion_point(copy_constructor:cura.proto.LayerOptimized)
}

inline void LayerOptimized::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&id_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&thickness_) -
    reinterpret_cast<char*>(&id_)) + sizeof(thickness_));
}

LayerOptimized::~LayerOptimized() {
  // @@protoc_insertion_point(destructor:cura.proto.LayerOptimized)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

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

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

void LayerOptimized::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.LayerOptimized)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  path_segment_.Clear();
  ::memset(&id_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&thickness_) -
      reinterpret_cast<char*>(&id_)) + sizeof(thickness_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* LayerOptimized::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float height = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          height_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float thickness = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          thickness_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated .cura.proto.PathSegment path_segment = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_path_segment(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* LayerOptimized::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.LayerOptimized)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 id = 1;
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_id(), target);
  }

  // float height = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = this->_internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(2, this->_internal_height(), target);
  }

  // float thickness = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_thickness = this->_internal_thickness();
  uint32_t raw_thickness;
  memcpy(&raw_thickness, &tmp_thickness, sizeof(tmp_thickness));
  if (raw_thickness != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(3, this->_internal_thickness(), target);
  }

  // repeated .cura.proto.PathSegment path_segment = 4;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_path_segment_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, this->_internal_path_segment(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.LayerOptimized)
  return target;
}

size_t LayerOptimized::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.LayerOptimized)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .cura.proto.PathSegment path_segment = 4;
  total_size += 1UL * this->_internal_path_segment_size();
  for (const auto& msg : this->path_segment_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // int32 id = 1;
  if (this->_internal_id() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_id());
  }

  // float height = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = this->_internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    total_size += 1 + 4;
  }

  // float thickness = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_thickness = this->_internal_thickness();
  uint32_t raw_thickness;
  memcpy(&raw_thickness, &tmp_thickness, sizeof(tmp_thickness));
  if (raw_thickness != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData LayerOptimized::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    LayerOptimized::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*LayerOptimized::GetClassData() const { return &_class_data_; }

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


void LayerOptimized::MergeFrom(const LayerOptimized& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.LayerOptimized)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  path_segment_.MergeFrom(from.path_segment_);
  if (from._internal_id() != 0) {
    _internal_set_id(from._internal_id());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = from._internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    _internal_set_height(from._internal_height());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_thickness = from._internal_thickness();
  uint32_t raw_thickness;
  memcpy(&raw_thickness, &tmp_thickness, sizeof(tmp_thickness));
  if (raw_thickness != 0) {
    _internal_set_thickness(from._internal_thickness());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void LayerOptimized::InternalSwap(LayerOptimized* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  path_segment_.InternalSwap(&other->path_segment_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(LayerOptimized, thickness_)
      + sizeof(LayerOptimized::thickness_)
      - PROTOBUF_FIELD_OFFSET(LayerOptimized, id_)>(
          reinterpret_cast<char*>(&id_),
          reinterpret_cast<char*>(&other->id_));
}

::PROTOBUF_NAMESPACE_ID::Metadata LayerOptimized::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[7]);
}

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

class PathSegment::_Internal {
 public:
};

PathSegment::PathSegment(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.PathSegment)
}
PathSegment::PathSegment(const PathSegment& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  points_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    points_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_points().empty()) {
    points_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_points(), 
      GetArenaForAllocation());
  }
  line_type_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    line_type_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_line_type().empty()) {
    line_type_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_line_type(), 
      GetArenaForAllocation());
  }
  line_width_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    line_width_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_line_width().empty()) {
    line_width_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_line_width(), 
      GetArenaForAllocation());
  }
  line_thickness_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    line_thickness_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_line_thickness().empty()) {
    line_thickness_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_line_thickness(), 
      GetArenaForAllocation());
  }
  line_feedrate_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    line_feedrate_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_line_feedrate().empty()) {
    line_feedrate_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_line_feedrate(), 
      GetArenaForAllocation());
  }
  ::memcpy(&extruder_, &from.extruder_,
    static_cast<size_t>(reinterpret_cast<char*>(&point_type_) -
    reinterpret_cast<char*>(&extruder_)) + sizeof(point_type_));
  // @@protoc_insertion_point(copy_constructor:cura.proto.PathSegment)
}

inline void PathSegment::SharedCtor() {
points_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  points_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
line_type_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  line_type_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
line_width_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  line_width_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
line_thickness_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  line_thickness_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
line_feedrate_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  line_feedrate_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&extruder_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&point_type_) -
    reinterpret_cast<char*>(&extruder_)) + sizeof(point_type_));
}

PathSegment::~PathSegment() {
  // @@protoc_insertion_point(destructor:cura.proto.PathSegment)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void PathSegment::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  points_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  line_type_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  line_width_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  line_thickness_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  line_feedrate_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void PathSegment::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.PathSegment)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  points_.ClearToEmpty();
  line_type_.ClearToEmpty();
  line_width_.ClearToEmpty();
  line_thickness_.ClearToEmpty();
  line_feedrate_.ClearToEmpty();
  ::memset(&extruder_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&point_type_) -
      reinterpret_cast<char*>(&extruder_)) + sizeof(point_type_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PathSegment::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 extruder = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          extruder_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .cura.proto.PathSegment.PointType point_type = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_point_type(static_cast<::cura::proto::PathSegment_PointType>(val));
        } else
          goto handle_unusual;
        continue;
      // bytes points = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_points();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes line_type = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_line_type();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes line_width = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_line_width();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes line_thickness = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          auto str = _internal_mutable_line_thickness();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes line_feedrate = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          auto str = _internal_mutable_line_feedrate();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PathSegment::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.PathSegment)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 extruder = 1;
  if (this->_internal_extruder() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(1, this->_internal_extruder(), target);
  }

  // .cura.proto.PathSegment.PointType point_type = 2;
  if (this->_internal_point_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      2, this->_internal_point_type(), target);
  }

  // bytes points = 3;
  if (!this->_internal_points().empty()) {
    target = stream->WriteBytesMaybeAliased(
        3, this->_internal_points(), target);
  }

  // bytes line_type = 4;
  if (!this->_internal_line_type().empty()) {
    target = stream->WriteBytesMaybeAliased(
        4, this->_internal_line_type(), target);
  }

  // bytes line_width = 5;
  if (!this->_internal_line_width().empty()) {
    target = stream->WriteBytesMaybeAliased(
        5, this->_internal_line_width(), target);
  }

  // bytes line_thickness = 6;
  if (!this->_internal_line_thickness().empty()) {
    target = stream->WriteBytesMaybeAliased(
        6, this->_internal_line_thickness(), target);
  }

  // bytes line_feedrate = 7;
  if (!this->_internal_line_feedrate().empty()) {
    target = stream->WriteBytesMaybeAliased(
        7, this->_internal_line_feedrate(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.PathSegment)
  return target;
}

size_t PathSegment::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.PathSegment)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // bytes points = 3;
  if (!this->_internal_points().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_points());
  }

  // bytes line_type = 4;
  if (!this->_internal_line_type().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_line_type());
  }

  // bytes line_width = 5;
  if (!this->_internal_line_width().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_line_width());
  }

  // bytes line_thickness = 6;
  if (!this->_internal_line_thickness().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_line_thickness());
  }

  // bytes line_feedrate = 7;
  if (!this->_internal_line_feedrate().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_line_feedrate());
  }

  // int32 extruder = 1;
  if (this->_internal_extruder() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_extruder());
  }

  // .cura.proto.PathSegment.PointType point_type = 2;
  if (this->_internal_point_type() != 0) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_point_type());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PathSegment::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    PathSegment::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PathSegment::GetClassData() const { return &_class_data_; }

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


void PathSegment::MergeFrom(const PathSegment& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.PathSegment)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_points().empty()) {
    _internal_set_points(from._internal_points());
  }
  if (!from._internal_line_type().empty()) {
    _internal_set_line_type(from._internal_line_type());
  }
  if (!from._internal_line_width().empty()) {
    _internal_set_line_width(from._internal_line_width());
  }
  if (!from._internal_line_thickness().empty()) {
    _internal_set_line_thickness(from._internal_line_thickness());
  }
  if (!from._internal_line_feedrate().empty()) {
    _internal_set_line_feedrate(from._internal_line_feedrate());
  }
  if (from._internal_extruder() != 0) {
    _internal_set_extruder(from._internal_extruder());
  }
  if (from._internal_point_type() != 0) {
    _internal_set_point_type(from._internal_point_type());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void PathSegment::InternalSwap(PathSegment* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &points_, lhs_arena,
      &other->points_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &line_type_, lhs_arena,
      &other->line_type_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &line_width_, lhs_arena,
      &other->line_width_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &line_thickness_, lhs_arena,
      &other->line_thickness_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &line_feedrate_, lhs_arena,
      &other->line_feedrate_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PathSegment, point_type_)
      + sizeof(PathSegment::point_type_)
      - PROTOBUF_FIELD_OFFSET(PathSegment, extruder_)>(
          reinterpret_cast<char*>(&extruder_),
          reinterpret_cast<char*>(&other->extruder_));
}

::PROTOBUF_NAMESPACE_ID::Metadata PathSegment::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[8]);
}

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

class GCodeLayer::_Internal {
 public:
};

GCodeLayer::GCodeLayer(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.GCodeLayer)
}
GCodeLayer::GCodeLayer(const GCodeLayer& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  data_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    data_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_data().empty()) {
    data_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_data(), 
      GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:cura.proto.GCodeLayer)
}

inline void GCodeLayer::SharedCtor() {
data_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  data_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

GCodeLayer::~GCodeLayer() {
  // @@protoc_insertion_point(destructor:cura.proto.GCodeLayer)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void GCodeLayer::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  data_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void GCodeLayer::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.GCodeLayer)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  data_.ClearToEmpty();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* GCodeLayer::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // bytes data = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_data();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* GCodeLayer::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.GCodeLayer)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // bytes data = 2;
  if (!this->_internal_data().empty()) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_data(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.GCodeLayer)
  return target;
}

size_t GCodeLayer::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.GCodeLayer)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // bytes data = 2;
  if (!this->_internal_data().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_data());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData GCodeLayer::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    GCodeLayer::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GCodeLayer::GetClassData() const { return &_class_data_; }

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


void GCodeLayer::MergeFrom(const GCodeLayer& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.GCodeLayer)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_data().empty()) {
    _internal_set_data(from._internal_data());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void GCodeLayer::InternalSwap(GCodeLayer* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &data_, lhs_arena,
      &other->data_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata GCodeLayer::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[9]);
}

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

class PrintTimeMaterialEstimates::_Internal {
 public:
};

PrintTimeMaterialEstimates::PrintTimeMaterialEstimates(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  materialestimates_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.PrintTimeMaterialEstimates)
}
PrintTimeMaterialEstimates::PrintTimeMaterialEstimates(const PrintTimeMaterialEstimates& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      materialestimates_(from.materialestimates_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&time_none_, &from.time_none_,
    static_cast<size_t>(reinterpret_cast<char*>(&time_prime_tower_) -
    reinterpret_cast<char*>(&time_none_)) + sizeof(time_prime_tower_));
  // @@protoc_insertion_point(copy_constructor:cura.proto.PrintTimeMaterialEstimates)
}

inline void PrintTimeMaterialEstimates::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&time_none_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&time_prime_tower_) -
    reinterpret_cast<char*>(&time_none_)) + sizeof(time_prime_tower_));
}

PrintTimeMaterialEstimates::~PrintTimeMaterialEstimates() {
  // @@protoc_insertion_point(destructor:cura.proto.PrintTimeMaterialEstimates)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

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

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

void PrintTimeMaterialEstimates::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.PrintTimeMaterialEstimates)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  materialestimates_.Clear();
  ::memset(&time_none_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&time_prime_tower_) -
      reinterpret_cast<char*>(&time_none_)) + sizeof(time_prime_tower_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PrintTimeMaterialEstimates::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float time_none = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          time_none_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_inset_0 = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          time_inset_0_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_inset_x = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          time_inset_x_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_skin = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          time_skin_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_support = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 45)) {
          time_support_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_skirt = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 53)) {
          time_skirt_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_infill = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 61)) {
          time_infill_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_support_infill = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 69)) {
          time_support_infill_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_travel = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 77)) {
          time_travel_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_retract = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 85)) {
          time_retract_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_support_interface = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 93)) {
          time_support_interface_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float time_prime_tower = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 101)) {
          time_prime_tower_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated .cura.proto.MaterialEstimates materialEstimates = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_materialestimates(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<106>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PrintTimeMaterialEstimates::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.PrintTimeMaterialEstimates)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float time_none = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_none = this->_internal_time_none();
  uint32_t raw_time_none;
  memcpy(&raw_time_none, &tmp_time_none, sizeof(tmp_time_none));
  if (raw_time_none != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(1, this->_internal_time_none(), target);
  }

  // float time_inset_0 = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_inset_0 = this->_internal_time_inset_0();
  uint32_t raw_time_inset_0;
  memcpy(&raw_time_inset_0, &tmp_time_inset_0, sizeof(tmp_time_inset_0));
  if (raw_time_inset_0 != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(2, this->_internal_time_inset_0(), target);
  }

  // float time_inset_x = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_inset_x = this->_internal_time_inset_x();
  uint32_t raw_time_inset_x;
  memcpy(&raw_time_inset_x, &tmp_time_inset_x, sizeof(tmp_time_inset_x));
  if (raw_time_inset_x != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(3, this->_internal_time_inset_x(), target);
  }

  // float time_skin = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_skin = this->_internal_time_skin();
  uint32_t raw_time_skin;
  memcpy(&raw_time_skin, &tmp_time_skin, sizeof(tmp_time_skin));
  if (raw_time_skin != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(4, this->_internal_time_skin(), target);
  }

  // float time_support = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_support = this->_internal_time_support();
  uint32_t raw_time_support;
  memcpy(&raw_time_support, &tmp_time_support, sizeof(tmp_time_support));
  if (raw_time_support != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(5, this->_internal_time_support(), target);
  }

  // float time_skirt = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_skirt = this->_internal_time_skirt();
  uint32_t raw_time_skirt;
  memcpy(&raw_time_skirt, &tmp_time_skirt, sizeof(tmp_time_skirt));
  if (raw_time_skirt != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(6, this->_internal_time_skirt(), target);
  }

  // float time_infill = 7;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_infill = this->_internal_time_infill();
  uint32_t raw_time_infill;
  memcpy(&raw_time_infill, &tmp_time_infill, sizeof(tmp_time_infill));
  if (raw_time_infill != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(7, this->_internal_time_infill(), target);
  }

  // float time_support_infill = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_support_infill = this->_internal_time_support_infill();
  uint32_t raw_time_support_infill;
  memcpy(&raw_time_support_infill, &tmp_time_support_infill, sizeof(tmp_time_support_infill));
  if (raw_time_support_infill != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(8, this->_internal_time_support_infill(), target);
  }

  // float time_travel = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_travel = this->_internal_time_travel();
  uint32_t raw_time_travel;
  memcpy(&raw_time_travel, &tmp_time_travel, sizeof(tmp_time_travel));
  if (raw_time_travel != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(9, this->_internal_time_travel(), target);
  }

  // float time_retract = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_retract = this->_internal_time_retract();
  uint32_t raw_time_retract;
  memcpy(&raw_time_retract, &tmp_time_retract, sizeof(tmp_time_retract));
  if (raw_time_retract != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(10, this->_internal_time_retract(), target);
  }

  // float time_support_interface = 11;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_support_interface = this->_internal_time_support_interface();
  uint32_t raw_time_support_interface;
  memcpy(&raw_time_support_interface, &tmp_time_support_interface, sizeof(tmp_time_support_interface));
  if (raw_time_support_interface != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(11, this->_internal_time_support_interface(), target);
  }

  // float time_prime_tower = 12;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_prime_tower = this->_internal_time_prime_tower();
  uint32_t raw_time_prime_tower;
  memcpy(&raw_time_prime_tower, &tmp_time_prime_tower, sizeof(tmp_time_prime_tower));
  if (raw_time_prime_tower != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(12, this->_internal_time_prime_tower(), target);
  }

  // repeated .cura.proto.MaterialEstimates materialEstimates = 13;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_materialestimates_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(13, this->_internal_materialestimates(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.PrintTimeMaterialEstimates)
  return target;
}

size_t PrintTimeMaterialEstimates::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.PrintTimeMaterialEstimates)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .cura.proto.MaterialEstimates materialEstimates = 13;
  total_size += 1UL * this->_internal_materialestimates_size();
  for (const auto& msg : this->materialestimates_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // float time_none = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_none = this->_internal_time_none();
  uint32_t raw_time_none;
  memcpy(&raw_time_none, &tmp_time_none, sizeof(tmp_time_none));
  if (raw_time_none != 0) {
    total_size += 1 + 4;
  }

  // float time_inset_0 = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_inset_0 = this->_internal_time_inset_0();
  uint32_t raw_time_inset_0;
  memcpy(&raw_time_inset_0, &tmp_time_inset_0, sizeof(tmp_time_inset_0));
  if (raw_time_inset_0 != 0) {
    total_size += 1 + 4;
  }

  // float time_inset_x = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_inset_x = this->_internal_time_inset_x();
  uint32_t raw_time_inset_x;
  memcpy(&raw_time_inset_x, &tmp_time_inset_x, sizeof(tmp_time_inset_x));
  if (raw_time_inset_x != 0) {
    total_size += 1 + 4;
  }

  // float time_skin = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_skin = this->_internal_time_skin();
  uint32_t raw_time_skin;
  memcpy(&raw_time_skin, &tmp_time_skin, sizeof(tmp_time_skin));
  if (raw_time_skin != 0) {
    total_size += 1 + 4;
  }

  // float time_support = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_support = this->_internal_time_support();
  uint32_t raw_time_support;
  memcpy(&raw_time_support, &tmp_time_support, sizeof(tmp_time_support));
  if (raw_time_support != 0) {
    total_size += 1 + 4;
  }

  // float time_skirt = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_skirt = this->_internal_time_skirt();
  uint32_t raw_time_skirt;
  memcpy(&raw_time_skirt, &tmp_time_skirt, sizeof(tmp_time_skirt));
  if (raw_time_skirt != 0) {
    total_size += 1 + 4;
  }

  // float time_infill = 7;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_infill = this->_internal_time_infill();
  uint32_t raw_time_infill;
  memcpy(&raw_time_infill, &tmp_time_infill, sizeof(tmp_time_infill));
  if (raw_time_infill != 0) {
    total_size += 1 + 4;
  }

  // float time_support_infill = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_support_infill = this->_internal_time_support_infill();
  uint32_t raw_time_support_infill;
  memcpy(&raw_time_support_infill, &tmp_time_support_infill, sizeof(tmp_time_support_infill));
  if (raw_time_support_infill != 0) {
    total_size += 1 + 4;
  }

  // float time_travel = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_travel = this->_internal_time_travel();
  uint32_t raw_time_travel;
  memcpy(&raw_time_travel, &tmp_time_travel, sizeof(tmp_time_travel));
  if (raw_time_travel != 0) {
    total_size += 1 + 4;
  }

  // float time_retract = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_retract = this->_internal_time_retract();
  uint32_t raw_time_retract;
  memcpy(&raw_time_retract, &tmp_time_retract, sizeof(tmp_time_retract));
  if (raw_time_retract != 0) {
    total_size += 1 + 4;
  }

  // float time_support_interface = 11;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_support_interface = this->_internal_time_support_interface();
  uint32_t raw_time_support_interface;
  memcpy(&raw_time_support_interface, &tmp_time_support_interface, sizeof(tmp_time_support_interface));
  if (raw_time_support_interface != 0) {
    total_size += 1 + 4;
  }

  // float time_prime_tower = 12;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_prime_tower = this->_internal_time_prime_tower();
  uint32_t raw_time_prime_tower;
  memcpy(&raw_time_prime_tower, &tmp_time_prime_tower, sizeof(tmp_time_prime_tower));
  if (raw_time_prime_tower != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PrintTimeMaterialEstimates::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    PrintTimeMaterialEstimates::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PrintTimeMaterialEstimates::GetClassData() const { return &_class_data_; }

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


void PrintTimeMaterialEstimates::MergeFrom(const PrintTimeMaterialEstimates& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.PrintTimeMaterialEstimates)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  materialestimates_.MergeFrom(from.materialestimates_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_none = from._internal_time_none();
  uint32_t raw_time_none;
  memcpy(&raw_time_none, &tmp_time_none, sizeof(tmp_time_none));
  if (raw_time_none != 0) {
    _internal_set_time_none(from._internal_time_none());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_inset_0 = from._internal_time_inset_0();
  uint32_t raw_time_inset_0;
  memcpy(&raw_time_inset_0, &tmp_time_inset_0, sizeof(tmp_time_inset_0));
  if (raw_time_inset_0 != 0) {
    _internal_set_time_inset_0(from._internal_time_inset_0());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_inset_x = from._internal_time_inset_x();
  uint32_t raw_time_inset_x;
  memcpy(&raw_time_inset_x, &tmp_time_inset_x, sizeof(tmp_time_inset_x));
  if (raw_time_inset_x != 0) {
    _internal_set_time_inset_x(from._internal_time_inset_x());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_skin = from._internal_time_skin();
  uint32_t raw_time_skin;
  memcpy(&raw_time_skin, &tmp_time_skin, sizeof(tmp_time_skin));
  if (raw_time_skin != 0) {
    _internal_set_time_skin(from._internal_time_skin());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_support = from._internal_time_support();
  uint32_t raw_time_support;
  memcpy(&raw_time_support, &tmp_time_support, sizeof(tmp_time_support));
  if (raw_time_support != 0) {
    _internal_set_time_support(from._internal_time_support());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_skirt = from._internal_time_skirt();
  uint32_t raw_time_skirt;
  memcpy(&raw_time_skirt, &tmp_time_skirt, sizeof(tmp_time_skirt));
  if (raw_time_skirt != 0) {
    _internal_set_time_skirt(from._internal_time_skirt());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_infill = from._internal_time_infill();
  uint32_t raw_time_infill;
  memcpy(&raw_time_infill, &tmp_time_infill, sizeof(tmp_time_infill));
  if (raw_time_infill != 0) {
    _internal_set_time_infill(from._internal_time_infill());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_support_infill = from._internal_time_support_infill();
  uint32_t raw_time_support_infill;
  memcpy(&raw_time_support_infill, &tmp_time_support_infill, sizeof(tmp_time_support_infill));
  if (raw_time_support_infill != 0) {
    _internal_set_time_support_infill(from._internal_time_support_infill());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_travel = from._internal_time_travel();
  uint32_t raw_time_travel;
  memcpy(&raw_time_travel, &tmp_time_travel, sizeof(tmp_time_travel));
  if (raw_time_travel != 0) {
    _internal_set_time_travel(from._internal_time_travel());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_retract = from._internal_time_retract();
  uint32_t raw_time_retract;
  memcpy(&raw_time_retract, &tmp_time_retract, sizeof(tmp_time_retract));
  if (raw_time_retract != 0) {
    _internal_set_time_retract(from._internal_time_retract());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_support_interface = from._internal_time_support_interface();
  uint32_t raw_time_support_interface;
  memcpy(&raw_time_support_interface, &tmp_time_support_interface, sizeof(tmp_time_support_interface));
  if (raw_time_support_interface != 0) {
    _internal_set_time_support_interface(from._internal_time_support_interface());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_time_prime_tower = from._internal_time_prime_tower();
  uint32_t raw_time_prime_tower;
  memcpy(&raw_time_prime_tower, &tmp_time_prime_tower, sizeof(tmp_time_prime_tower));
  if (raw_time_prime_tower != 0) {
    _internal_set_time_prime_tower(from._internal_time_prime_tower());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void PrintTimeMaterialEstimates::InternalSwap(PrintTimeMaterialEstimates* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  materialestimates_.InternalSwap(&other->materialestimates_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PrintTimeMaterialEstimates, time_prime_tower_)
      + sizeof(PrintTimeMaterialEstimates::time_prime_tower_)
      - PROTOBUF_FIELD_OFFSET(PrintTimeMaterialEstimates, time_none_)>(
          reinterpret_cast<char*>(&time_none_),
          reinterpret_cast<char*>(&other->time_none_));
}

::PROTOBUF_NAMESPACE_ID::Metadata PrintTimeMaterialEstimates::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[10]);
}

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

class MaterialEstimates::_Internal {
 public:
};

MaterialEstimates::MaterialEstimates(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.MaterialEstimates)
}
MaterialEstimates::MaterialEstimates(const MaterialEstimates& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&id_, &from.id_,
    static_cast<size_t>(reinterpret_cast<char*>(&material_amount_) -
    reinterpret_cast<char*>(&id_)) + sizeof(material_amount_));
  // @@protoc_insertion_point(copy_constructor:cura.proto.MaterialEstimates)
}

inline void MaterialEstimates::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&id_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&material_amount_) -
    reinterpret_cast<char*>(&id_)) + sizeof(material_amount_));
}

MaterialEstimates::~MaterialEstimates() {
  // @@protoc_insertion_point(destructor:cura.proto.MaterialEstimates)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

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

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

void MaterialEstimates::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.MaterialEstimates)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&id_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&material_amount_) -
      reinterpret_cast<char*>(&id_)) + sizeof(material_amount_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MaterialEstimates::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int64 id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float material_amount = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          material_amount_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* MaterialEstimates::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.MaterialEstimates)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 id = 1;
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(1, this->_internal_id(), target);
  }

  // float material_amount = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_material_amount = this->_internal_material_amount();
  uint32_t raw_material_amount;
  memcpy(&raw_material_amount, &tmp_material_amount, sizeof(tmp_material_amount));
  if (raw_material_amount != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(2, this->_internal_material_amount(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.MaterialEstimates)
  return target;
}

size_t MaterialEstimates::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.MaterialEstimates)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int64 id = 1;
  if (this->_internal_id() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_id());
  }

  // float material_amount = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_material_amount = this->_internal_material_amount();
  uint32_t raw_material_amount;
  memcpy(&raw_material_amount, &tmp_material_amount, sizeof(tmp_material_amount));
  if (raw_material_amount != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MaterialEstimates::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    MaterialEstimates::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MaterialEstimates::GetClassData() const { return &_class_data_; }

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


void MaterialEstimates::MergeFrom(const MaterialEstimates& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.MaterialEstimates)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_id() != 0) {
    _internal_set_id(from._internal_id());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_material_amount = from._internal_material_amount();
  uint32_t raw_material_amount;
  memcpy(&raw_material_amount, &tmp_material_amount, sizeof(tmp_material_amount));
  if (raw_material_amount != 0) {
    _internal_set_material_amount(from._internal_material_amount());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void MaterialEstimates::InternalSwap(MaterialEstimates* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MaterialEstimates, material_amount_)
      + sizeof(MaterialEstimates::material_amount_)
      - PROTOBUF_FIELD_OFFSET(MaterialEstimates, id_)>(
          reinterpret_cast<char*>(&id_),
          reinterpret_cast<char*>(&other->id_));
}

::PROTOBUF_NAMESPACE_ID::Metadata MaterialEstimates::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[11]);
}

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

class SettingList::_Internal {
 public:
};

SettingList::SettingList(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  settings_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.SettingList)
}
SettingList::SettingList(const SettingList& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      settings_(from.settings_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:cura.proto.SettingList)
}

inline void SettingList::SharedCtor() {
}

SettingList::~SettingList() {
  // @@protoc_insertion_point(destructor:cura.proto.SettingList)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

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

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

void SettingList::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.SettingList)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  settings_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SettingList::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .cura.proto.Setting settings = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_settings(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SettingList::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.SettingList)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .cura.proto.Setting settings = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->_internal_settings_size()); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, this->_internal_settings(i), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.SettingList)
  return target;
}

size_t SettingList::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.SettingList)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .cura.proto.Setting settings = 1;
  total_size += 1UL * this->_internal_settings_size();
  for (const auto& msg : this->settings_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SettingList::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    SettingList::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SettingList::GetClassData() const { return &_class_data_; }

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


void SettingList::MergeFrom(const SettingList& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.SettingList)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  settings_.MergeFrom(from.settings_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

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

::PROTOBUF_NAMESPACE_ID::Metadata SettingList::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[12]);
}

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

class Setting::_Internal {
 public:
};

Setting::Setting(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.Setting)
}
Setting::Setting(const Setting& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  value_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    value_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_value().empty()) {
    value_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_value(), 
      GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:cura.proto.Setting)
}

inline void Setting::SharedCtor() {
name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
value_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  value_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Setting::~Setting() {
  // @@protoc_insertion_point(destructor:cura.proto.Setting)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void Setting::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  value_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void Setting::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.Setting)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  name_.ClearToEmpty();
  value_.ClearToEmpty();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Setting::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cura.proto.Setting.name"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bytes value = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_value();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Setting::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.Setting)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "cura.proto.Setting.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // bytes value = 2;
  if (!this->_internal_value().empty()) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_value(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.Setting)
  return target;
}

size_t Setting::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.Setting)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // bytes value = 2;
  if (!this->_internal_value().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_value());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Setting::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Setting::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Setting::GetClassData() const { return &_class_data_; }

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


void Setting::MergeFrom(const Setting& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.Setting)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _internal_set_name(from._internal_name());
  }
  if (!from._internal_value().empty()) {
    _internal_set_value(from._internal_value());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void Setting::InternalSwap(Setting* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &value_, lhs_arena,
      &other->value_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata Setting::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[13]);
}

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

class SettingExtruder::_Internal {
 public:
};

SettingExtruder::SettingExtruder(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.SettingExtruder)
}
SettingExtruder::SettingExtruder(const SettingExtruder& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    name_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_name(), 
      GetArenaForAllocation());
  }
  extruder_ = from.extruder_;
  // @@protoc_insertion_point(copy_constructor:cura.proto.SettingExtruder)
}

inline void SettingExtruder::SharedCtor() {
name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
extruder_ = 0;
}

SettingExtruder::~SettingExtruder() {
  // @@protoc_insertion_point(destructor:cura.proto.SettingExtruder)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void SettingExtruder::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void SettingExtruder::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.SettingExtruder)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  name_.ClearToEmpty();
  extruder_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SettingExtruder::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "cura.proto.SettingExtruder.name"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 extruder = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          extruder_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SettingExtruder::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.SettingExtruder)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "cura.proto.SettingExtruder.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // int32 extruder = 2;
  if (this->_internal_extruder() != 0) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_extruder(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.SettingExtruder)
  return target;
}

size_t SettingExtruder::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.SettingExtruder)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // int32 extruder = 2;
  if (this->_internal_extruder() != 0) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_extruder());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SettingExtruder::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    SettingExtruder::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SettingExtruder::GetClassData() const { return &_class_data_; }

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


void SettingExtruder::MergeFrom(const SettingExtruder& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.SettingExtruder)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _internal_set_name(from._internal_name());
  }
  if (from._internal_extruder() != 0) {
    _internal_set_extruder(from._internal_extruder());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void SettingExtruder::InternalSwap(SettingExtruder* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  swap(extruder_, other->extruder_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SettingExtruder::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[14]);
}

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

class GCodePrefix::_Internal {
 public:
};

GCodePrefix::GCodePrefix(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:cura.proto.GCodePrefix)
}
GCodePrefix::GCodePrefix(const GCodePrefix& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  data_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    data_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_data().empty()) {
    data_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_data(), 
      GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:cura.proto.GCodePrefix)
}

inline void GCodePrefix::SharedCtor() {
data_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  data_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

GCodePrefix::~GCodePrefix() {
  // @@protoc_insertion_point(destructor:cura.proto.GCodePrefix)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

inline void GCodePrefix::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  data_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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

void GCodePrefix::Clear() {
// @@protoc_insertion_point(message_clear_start:cura.proto.GCodePrefix)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  data_.ClearToEmpty();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* GCodePrefix::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // bytes data = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_data();
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* GCodePrefix::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:cura.proto.GCodePrefix)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // bytes data = 2;
  if (!this->_internal_data().empty()) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_data(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:cura.proto.GCodePrefix)
  return target;
}

size_t GCodePrefix::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:cura.proto.GCodePrefix)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // bytes data = 2;
  if (!this->_internal_data().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_data());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData GCodePrefix::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    GCodePrefix::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GCodePrefix::GetClassData() const { return &_class_data_; }

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


void GCodePrefix::MergeFrom(const GCodePrefix& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:cura.proto.GCodePrefix)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_data().empty()) {
    _internal_set_data(from._internal_data());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void GCodePrefix::InternalSwap(GCodePrefix* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      &data_, lhs_arena,
      &other->data_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata GCodePrefix::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[15]);
}

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

class SlicingFinished::_Internal {
 public:
};

SlicingFinished::SlicingFinished(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase(arena, is_message_owned) {
  // @@protoc_insertion_point(arena_constructor:cura.proto.SlicingFinished)
}
SlicingFinished::SlicingFinished(const SlicingFinished& from)
  : ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase() {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:cura.proto.SlicingFinished)
}





const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SlicingFinished::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl,
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl,
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SlicingFinished::GetClassData() const { return &_class_data_; }







::PROTOBUF_NAMESPACE_ID::Metadata SlicingFinished::GetMetadata() const {
  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
      &descriptor_table_Cura_2eproto_getter, &descriptor_table_Cura_2eproto_once,
      file_level_metadata_Cura_2eproto[16]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace proto
}  // namespace cura
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::cura::proto::ObjectList* Arena::CreateMaybeMessage< ::cura::proto::ObjectList >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::ObjectList >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::Slice* Arena::CreateMaybeMessage< ::cura::proto::Slice >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::Slice >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::Extruder* Arena::CreateMaybeMessage< ::cura::proto::Extruder >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::Extruder >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::Object* Arena::CreateMaybeMessage< ::cura::proto::Object >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::Object >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::Progress* Arena::CreateMaybeMessage< ::cura::proto::Progress >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::Progress >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::Layer* Arena::CreateMaybeMessage< ::cura::proto::Layer >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::Layer >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::Polygon* Arena::CreateMaybeMessage< ::cura::proto::Polygon >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::Polygon >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::LayerOptimized* Arena::CreateMaybeMessage< ::cura::proto::LayerOptimized >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::LayerOptimized >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::PathSegment* Arena::CreateMaybeMessage< ::cura::proto::PathSegment >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::PathSegment >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::GCodeLayer* Arena::CreateMaybeMessage< ::cura::proto::GCodeLayer >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::GCodeLayer >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::PrintTimeMaterialEstimates* Arena::CreateMaybeMessage< ::cura::proto::PrintTimeMaterialEstimates >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::PrintTimeMaterialEstimates >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::MaterialEstimates* Arena::CreateMaybeMessage< ::cura::proto::MaterialEstimates >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::MaterialEstimates >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::SettingList* Arena::CreateMaybeMessage< ::cura::proto::SettingList >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::SettingList >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::Setting* Arena::CreateMaybeMessage< ::cura::proto::Setting >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::Setting >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::SettingExtruder* Arena::CreateMaybeMessage< ::cura::proto::SettingExtruder >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::SettingExtruder >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::GCodePrefix* Arena::CreateMaybeMessage< ::cura::proto::GCodePrefix >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::GCodePrefix >(arena);
}
template<> PROTOBUF_NOINLINE ::cura::proto::SlicingFinished* Arena::CreateMaybeMessage< ::cura::proto::SlicingFinished >(Arena* arena) {
  return Arena::CreateMessageInternal< ::cura::proto::SlicingFinished >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

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