[VOL-4282] Introduce PON-ID, [VOL-4281] Introduce mapping_label for ports

Change-Id: Id8011f654bd06eb2d042867e7dc243dfc7fa4f26
diff --git a/VERSION b/VERSION
index 658aed9..9084fa2 100644
--- a/VERSION
+++ b/VERSION
@@ -1,2 +1 @@
-1.0.1
-
+1.1.0
diff --git a/cpp/dmi/hw.pb.cc b/cpp/dmi/hw.pb.cc
index 1b32844..4d358d9 100644
--- a/cpp/dmi/hw.pb.cc
+++ b/cpp/dmi/hw.pb.cc
@@ -17,13 +17,15 @@
 #include <google/protobuf/port_def.inc>
 
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ContainerComponentAttributes_dmi_2fhw_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PortComponentAttributes_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PonIdConfig_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PsuComponentAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TransceiverComponentsAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uri_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uuid_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ComponentSensorData_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ComponentState_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentAttributes_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<9> scc_info_Component_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftimestamp_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto;
 namespace dmi {
@@ -51,6 +53,14 @@
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<PortComponentAttributes> _instance;
 } _PortComponentAttributes_default_instance_;
+class PortComponentChangeAttributesDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<PortComponentChangeAttributes> _instance;
+} _PortComponentChangeAttributes_default_instance_;
+class PonIdConfigDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<PonIdConfig> _instance;
+} _PonIdConfig_default_instance_;
 class ContainerComponentAttributesDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<ContainerComponentAttributes> _instance;
@@ -78,6 +88,7 @@
 class ModifiableComponentDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<ModifiableComponent> _instance;
+  const ::dmi::PortComponentChangeAttributes* port_attr_;
 } _ModifiableComponent_default_instance_;
 }  // namespace dmi
 static void InitDefaultsUuid_dmi_2fhw_2eproto() {
@@ -164,8 +175,38 @@
   ::dmi::PortComponentAttributes::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<0> scc_info_PortComponentAttributes_dmi_2fhw_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsPortComponentAttributes_dmi_2fhw_2eproto}, {}};
+::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentAttributes_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsPortComponentAttributes_dmi_2fhw_2eproto}, {
+      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,}};
+
+static void InitDefaultsPortComponentChangeAttributes_dmi_2fhw_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_PortComponentChangeAttributes_default_instance_;
+    new (ptr) ::dmi::PortComponentChangeAttributes();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::PortComponentChangeAttributes::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsPortComponentChangeAttributes_dmi_2fhw_2eproto}, {
+      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,}};
+
+static void InitDefaultsPonIdConfig_dmi_2fhw_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_PonIdConfig_default_instance_;
+    new (ptr) ::dmi::PonIdConfig();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::PonIdConfig::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_PonIdConfig_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsPonIdConfig_dmi_2fhw_2eproto}, {}};
 
 static void InitDefaultsContainerComponentAttributes_dmi_2fhw_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
@@ -259,10 +300,11 @@
   ::dmi::ModifiableComponent::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<2> scc_info_ModifiableComponent_dmi_2fhw_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsModifiableComponent_dmi_2fhw_2eproto}, {
+::google::protobuf::internal::SCCInfo<3> scc_info_ModifiableComponent_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsModifiableComponent_dmi_2fhw_2eproto}, {
       &scc_info_Component_dmi_2fhw_2eproto.base,
-      &scc_info_Uri_dmi_2fhw_2eproto.base,}};
+      &scc_info_Uri_dmi_2fhw_2eproto.base,
+      &scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base,}};
 
 void InitDefaults_dmi_2fhw_2eproto() {
   ::google::protobuf::internal::InitSCC(&scc_info_Uuid_dmi_2fhw_2eproto.base);
@@ -271,6 +313,8 @@
   ::google::protobuf::internal::InitSCC(&scc_info_ComponentState_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_ComponentSensorData_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PortComponentAttributes_dmi_2fhw_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_PonIdConfig_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_ContainerComponentAttributes_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PsuComponentAttributes_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_TransceiverComponentsAttributes_dmi_2fhw_2eproto.base);
@@ -279,7 +323,7 @@
   ::google::protobuf::internal::InitSCC(&scc_info_ModifiableComponent_dmi_2fhw_2eproto.base);
 }
 
-::google::protobuf::Metadata file_level_metadata_dmi_2fhw_2eproto[12];
+::google::protobuf::Metadata file_level_metadata_dmi_2fhw_2eproto[14];
 const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_2eproto[15];
 constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_dmi_2fhw_2eproto = nullptr;
 
@@ -336,6 +380,21 @@
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, speed_),
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, protocol_),
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, physical_label_),
+  PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, mapping_label_),
+  PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, pon_id_config_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::PortComponentChangeAttributes, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::PortComponentChangeAttributes, pon_id_config_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::PonIdConfig, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::PonIdConfig, pon_id_),
+  PROTOBUF_FIELD_OFFSET(::dmi::PonIdConfig, pon_id_transmit_periodicity_),
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::ContainerComponentAttributes, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -401,7 +460,7 @@
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, _internal_metadata_),
   ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
+  PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, _oneof_case_[0]),
   ~0u,  // no _weak_field_map_
   PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, name_),
   PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, class__),
@@ -411,6 +470,8 @@
   PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, asset_id_),
   PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, uri_),
   PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, admin_state_),
+  offsetof(::dmi::ModifiableComponentDefaultTypeInternal, port_attr_),
+  PROTOBUF_FIELD_OFFSET(::dmi::ModifiableComponent, specific_),
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
   { 0, -1, sizeof(::dmi::Uuid)},
@@ -419,12 +480,14 @@
   { 18, -1, sizeof(::dmi::ComponentState)},
   { 29, -1, sizeof(::dmi::ComponentSensorData)},
   { 43, -1, sizeof(::dmi::PortComponentAttributes)},
-  { 52, -1, sizeof(::dmi::ContainerComponentAttributes)},
-  { 58, -1, sizeof(::dmi::PsuComponentAttributes)},
-  { 64, -1, sizeof(::dmi::TransceiverComponentsAttributes)},
-  { 76, -1, sizeof(::dmi::Component)},
-  { 106, -1, sizeof(::dmi::Hardware)},
-  { 114, -1, sizeof(::dmi::ModifiableComponent)},
+  { 54, -1, sizeof(::dmi::PortComponentChangeAttributes)},
+  { 60, -1, sizeof(::dmi::PonIdConfig)},
+  { 67, -1, sizeof(::dmi::ContainerComponentAttributes)},
+  { 73, -1, sizeof(::dmi::PsuComponentAttributes)},
+  { 79, -1, sizeof(::dmi::TransceiverComponentsAttributes)},
+  { 91, -1, sizeof(::dmi::Component)},
+  { 121, -1, sizeof(::dmi::Hardware)},
+  { 129, -1, sizeof(::dmi::ModifiableComponent)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -434,6 +497,8 @@
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ComponentState_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ComponentSensorData_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PortComponentAttributes_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PortComponentChangeAttributes_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PonIdConfig_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ContainerComponentAttributes_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PsuComponentAttributes_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_TransceiverComponentsAttributes_default_instance_),
@@ -445,7 +510,7 @@
 ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_dmi_2fhw_2eproto = {
   {}, AddDescriptors_dmi_2fhw_2eproto, "dmi/hw.proto", schemas,
   file_default_instances, TableStruct_dmi_2fhw_2eproto::offsets,
-  file_level_metadata_dmi_2fhw_2eproto, 12, file_level_enum_descriptors_dmi_2fhw_2eproto, file_level_service_descriptors_dmi_2fhw_2eproto,
+  file_level_metadata_dmi_2fhw_2eproto, 14, file_level_enum_descriptors_dmi_2fhw_2eproto, file_level_service_descriptors_dmi_2fhw_2eproto,
 };
 
 const char descriptor_table_protodef_dmi_2fhw_2eproto[] =
@@ -467,138 +532,145 @@
   "atus\022\025\n\runits_display\030\006 \001(\t\022-\n\ttimestamp"
   "\030\007 \001(\0132\032.google.protobuf.Timestamp\022\031\n\021va"
   "lue_update_rate\030\010 \001(\r\022\021\n\tdata_type\030\t \001(\t"
-  "\"\202\005\n\027PortComponentAttributes\022B\n\016connecto"
+  "\"\302\005\n\027PortComponentAttributes\022B\n\016connecto"
   "r_type\030\001 \001(\0162*.dmi.PortComponentAttribut"
   "es.ConnectorType\0221\n\005speed\030\002 \001(\0162\".dmi.Po"
   "rtComponentAttributes.Speed\0227\n\010protocol\030"
   "\003 \001(\0162%.dmi.PortComponentAttributes.Prot"
-  "ocol\022\026\n\016physical_label\030\004 \001(\t\"p\n\rConnecto"
-  "rType\022\034\n\030CONNECTOR_TYPE_UNDEFINED\020\000\022\010\n\004R"
-  "J45\020\001\022\014\n\010FIBER_LC\020\002\022\017\n\013FIBER_SC_PC\020\003\022\r\n\t"
-  "FIBER_MPO\020\004\022\t\n\005RS232\020\005\"\256\001\n\005Speed\022\023\n\017SPEE"
-  "D_UNDEFINED\020\000\022\013\n\007DYNAMIC\020\001\022\r\n\tGIGABIT_1\020"
-  "\002\022\016\n\nGIGABIT_10\020\003\022\016\n\nGIGABIT_25\020\004\022\016\n\nGIG"
-  "ABIT_40\020\005\022\017\n\013GIGABIT_100\020\006\022\017\n\013GIGABIT_40"
-  "0\020\007\022\020\n\014MEGABIT_2500\020\010\022\020\n\014MEGABIT_1250\020\t\""
-  "|\n\010Protocol\022\026\n\022PROTOCOL_UNDEFINED\020\000\022\014\n\010E"
+  "ocol\022\026\n\016physical_label\030\004 \001(\t\022\025\n\rmapping_"
+  "label\030\005 \001(\t\022\'\n\rpon_id_config\030\006 \001(\0132\020.dmi"
+  ".PonIdConfig\"p\n\rConnectorType\022\034\n\030CONNECT"
+  "OR_TYPE_UNDEFINED\020\000\022\010\n\004RJ45\020\001\022\014\n\010FIBER_L"
+  "C\020\002\022\017\n\013FIBER_SC_PC\020\003\022\r\n\tFIBER_MPO\020\004\022\t\n\005R"
+  "S232\020\005\"\256\001\n\005Speed\022\023\n\017SPEED_UNDEFINED\020\000\022\013\n"
+  "\007DYNAMIC\020\001\022\r\n\tGIGABIT_1\020\002\022\016\n\nGIGABIT_10\020"
+  "\003\022\016\n\nGIGABIT_25\020\004\022\016\n\nGIGABIT_40\020\005\022\017\n\013GIG"
+  "ABIT_100\020\006\022\017\n\013GIGABIT_400\020\007\022\020\n\014MEGABIT_2"
+  "500\020\010\022\020\n\014MEGABIT_1250\020\t\"|\n\010Protocol\022\026\n\022P"
+  "ROTOCOL_UNDEFINED\020\000\022\014\n\010ETHERNET\020\001\022\010\n\004GPO"
+  "N\020\002\022\t\n\005XGPON\020\003\022\n\n\006XGSPON\020\004\022\t\n\005GFAST\020\005\022\n\n"
+  "\006SERIAL\020\006\022\010\n\004EPON\020\007\022\010\n\004BITS\020\010\"H\n\035PortCom"
+  "ponentChangeAttributes\022\'\n\rpon_id_config\030"
+  "\001 \001(\0132\020.dmi.PonIdConfig\"B\n\013PonIdConfig\022\016"
+  "\n\006pon_id\030\001 \001(\014\022#\n\033pon_id_transmit_period"
+  "icity\030\002 \001(\r\"6\n\034ContainerComponentAttribu"
+  "tes\022\026\n\016physical_label\030\001 \001(\t\"\263\001\n\026PsuCompo"
+  "nentAttributes\022G\n\021supported_voltage\030\001 \001("
+  "\0162,.dmi.PsuComponentAttributes.Supported"
+  "Voltage\"P\n\020SupportedVoltage\022\037\n\033SUPPORTED"
+  "_VOLTAGE_UNDEFINED\020\000\022\007\n\003V48\020\001\022\010\n\004V230\020\002\022"
+  "\010\n\004V115\020\003\"\357\004\n\037TransceiverComponentsAttri"
+  "butes\022D\n\013form_factor\030\001 \001(\0162/.dmi.Transce"
+  "iverComponentsAttributes.FormFactor\022=\n\nt"
+  "rans_type\030\002 \001(\0162).dmi.TransceiverCompone"
+  "ntsAttributes.Type\022\024\n\014max_distance\030\003 \001(\r"
+  "\022+\n\022max_distance_scale\030\004 \001(\0162\017.dmi.Value"
+  "Scale\022\025\n\rrx_wavelength\030\005 \003(\r\022\025\n\rtx_wavel"
+  "ength\030\006 \003(\r\022)\n\020wavelength_scale\030\007 \001(\0162\017."
+  "dmi.ValueScale\"\300\001\n\nFormFactor\022\027\n\023FORM_FA"
+  "CTOR_UNKNOWN\020\000\022\010\n\004QSFP\020\001\022\r\n\tQSFP_PLUS\020\002\022"
+  "\n\n\006QSFP28\020\003\022\007\n\003SFP\020\004\022\014\n\010SFP_PLUS\020\005\022\007\n\003XF"
+  "P\020\006\022\010\n\004CFP4\020\007\022\010\n\004CFP2\020\010\022\010\n\004CPAK\020\t\022\006\n\002X2\020"
+  "\n\022\t\n\005OTHER\020\013\022\007\n\003CFP\020\014\022\014\n\010CFP2_ACO\020\r\022\014\n\010C"
+  "FP2_DCO\020\016\"h\n\004Type\022\020\n\014TYPE_UNKNOWN\020\000\022\014\n\010E"
   "THERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005XGPON\020\003\022\n\n\006XGSPON"
-  "\020\004\022\t\n\005GFAST\020\005\022\n\n\006SERIAL\020\006\022\010\n\004EPON\020\007\022\010\n\004B"
-  "ITS\020\010\"6\n\034ContainerComponentAttributes\022\026\n"
-  "\016physical_label\030\001 \001(\t\"\263\001\n\026PsuComponentAt"
-  "tributes\022G\n\021supported_voltage\030\001 \001(\0162,.dm"
-  "i.PsuComponentAttributes.SupportedVoltag"
-  "e\"P\n\020SupportedVoltage\022\037\n\033SUPPORTED_VOLTA"
-  "GE_UNDEFINED\020\000\022\007\n\003V48\020\001\022\010\n\004V230\020\002\022\010\n\004V11"
-  "5\020\003\"\357\004\n\037TransceiverComponentsAttributes\022"
-  "D\n\013form_factor\030\001 \001(\0162/.dmi.TransceiverCo"
-  "mponentsAttributes.FormFactor\022=\n\ntrans_t"
-  "ype\030\002 \001(\0162).dmi.TransceiverComponentsAtt"
-  "ributes.Type\022\024\n\014max_distance\030\003 \001(\r\022+\n\022ma"
-  "x_distance_scale\030\004 \001(\0162\017.dmi.ValueScale\022"
-  "\025\n\rrx_wavelength\030\005 \003(\r\022\025\n\rtx_wavelength\030"
-  "\006 \003(\r\022)\n\020wavelength_scale\030\007 \001(\0162\017.dmi.Va"
-  "lueScale\"\300\001\n\nFormFactor\022\027\n\023FORM_FACTOR_U"
-  "NKNOWN\020\000\022\010\n\004QSFP\020\001\022\r\n\tQSFP_PLUS\020\002\022\n\n\006QSF"
-  "P28\020\003\022\007\n\003SFP\020\004\022\014\n\010SFP_PLUS\020\005\022\007\n\003XFP\020\006\022\010\n"
-  "\004CFP4\020\007\022\010\n\004CFP2\020\010\022\010\n\004CPAK\020\t\022\006\n\002X2\020\n\022\t\n\005O"
-  "THER\020\013\022\007\n\003CFP\020\014\022\014\n\010CFP2_ACO\020\r\022\014\n\010CFP2_DC"
-  "O\020\016\"h\n\004Type\022\020\n\014TYPE_UNKNOWN\020\000\022\014\n\010ETHERNE"
-  "T\020\001\022\010\n\004GPON\020\002\022\t\n\005XGPON\020\003\022\n\n\006XGSPON\020\004\022\010\n\004"
-  "CPON\020\005\022\013\n\007NG_PON2\020\006\022\010\n\004EPON\020\007\"\350\005\n\tCompon"
-  "ent\022\014\n\004name\030\001 \001(\t\022!\n\005class\030\002 \001(\0162\022.dmi.C"
-  "omponentType\022\023\n\013description\030\003 \001(\t\022\016\n\006par"
-  "ent\030\004 \001(\t\022\026\n\016parent_rel_pos\030\005 \001(\005\022 \n\010chi"
-  "ldren\030\006 \003(\0132\016.dmi.Component\022\024\n\014hardware_"
-  "rev\030\007 \001(\t\022\024\n\014firmware_rev\030\010 \001(\t\022\024\n\014softw"
-  "are_rev\030\t \001(\t\022\022\n\nserial_num\030\n \001(\t\022\020\n\010mfg"
-  "_name\030\013 \001(\t\022\022\n\nmodel_name\030\014 \001(\t\022\r\n\005alias"
-  "\030\r \001(\t\022\020\n\010asset_id\030\016 \001(\t\022\016\n\006is_fru\030\017 \001(\010"
-  "\022,\n\010mfg_date\030\020 \001(\0132\032.google.protobuf.Tim"
-  "estamp\022\025\n\003uri\030\021 \001(\0132\010.dmi.Uri\022\027\n\004uuid\030\022 "
-  "\001(\0132\t.dmi.Uuid\022\"\n\005state\030\023 \001(\0132\023.dmi.Comp"
-  "onentState\022-\n\013sensor_data\030\024 \003(\0132\030.dmi.Co"
-  "mponentSensorData\0221\n\tport_attr\0302 \001(\0132\034.d"
-  "mi.PortComponentAttributesH\000\022;\n\016containe"
-  "r_attr\0303 \001(\0132!.dmi.ContainerComponentAtt"
-  "ributesH\000\022/\n\010psu_attr\0304 \001(\0132\033.dmi.PsuCom"
-  "ponentAttributesH\000\022@\n\020transceiver_attr\0305"
-  " \001(\0132$.dmi.TransceiverComponentsAttribut"
-  "esH\000B\n\n\010specific\"\212\001\n\010Hardware\022/\n\013last_ch"
-  "ange\030\001 \001(\0132\032.google.protobuf.Timestamp\022\034"
-  "\n\004root\030\002 \001(\0132\016.dmi.Component\022/\n\013last_boo"
-  "ted\030\003 \001(\0132\032.google.protobuf.Timestamp\"\345\001"
-  "\n\023ModifiableComponent\022\014\n\004name\030\001 \001(\t\022!\n\005c"
-  "lass\030\002 \001(\0162\022.dmi.ComponentType\022\036\n\006parent"
-  "\030\003 \001(\0132\016.dmi.Component\022\026\n\016parent_rel_pos"
-  "\030\004 \001(\005\022\r\n\005alias\030\005 \001(\t\022\020\n\010asset_id\030\006 \001(\t\022"
-  "\025\n\003uri\030\007 \001(\0132\010.dmi.Uri\022-\n\013admin_state\030\010 "
-  "\001(\0162\030.dmi.ComponentAdminState*\264\003\n\rCompon"
-  "entType\022\034\n\030COMPONENT_TYPE_UNDEFINED\020\000\022\032\n"
-  "\026COMPONENT_TYPE_UNKNOWN\020\001\022\032\n\026COMPONENT_T"
-  "YPE_CHASSIS\020\002\022\034\n\030COMPONENT_TYPE_BACKPLAN"
-  "E\020\003\022\034\n\030COMPONENT_TYPE_CONTAINER\020\004\022\037\n\033COM"
-  "PONENT_TYPE_POWER_SUPPLY\020\005\022\026\n\022COMPONENT_"
-  "TYPE_FAN\020\006\022\031\n\025COMPONENT_TYPE_SENSOR\020\007\022\031\n"
-  "\025COMPONENT_TYPE_MODULE\020\010\022\027\n\023COMPONENT_TY"
-  "PE_PORT\020\t\022\026\n\022COMPONENT_TYPE_CPU\020\n\022\032\n\026COM"
-  "PONENT_TYPE_BATTERY\020\013\022\032\n\026COMPONENT_TYPE_"
-  "STORAGE\020\014\022\031\n\025COMPONENT_TYPE_MEMORY\020\r\022\036\n\032"
-  "COMPONENT_TYPE_TRANSCEIVER\020\016*\263\001\n\023Compone"
-  "ntAdminState\022\036\n\032COMP_ADMIN_STATE_UNDEFIN"
-  "ED\020\000\022\034\n\030COMP_ADMIN_STATE_UNKNOWN\020\001\022\033\n\027CO"
-  "MP_ADMIN_STATE_LOCKED\020\002\022\"\n\036COMP_ADMIN_ST"
-  "ATE_SHUTTING_DOWN\020\003\022\035\n\031COMP_ADMIN_STATE_"
-  "UNLOCKED\020\004*\250\001\n\022ComponentOperState\022\035\n\031COM"
-  "P_OPER_STATE_UNDEFINED\020\000\022\033\n\027COMP_OPER_ST"
-  "ATE_UNKNOWN\020\001\022\034\n\030COMP_OPER_STATE_DISABLE"
-  "D\020\002\022\033\n\027COMP_OPER_STATE_ENABLED\020\003\022\033\n\027COMP"
-  "_OPER_STATE_TESTING\020\004*\246\001\n\023ComponentUsage"
-  "State\022\036\n\032COMP_USAGE_STATE_UNDEFINED\020\000\022\034\n"
-  "\030COMP_USAGE_STATE_UNKNOWN\020\001\022\031\n\025COMP_USAG"
-  "E_STATE_IDLE\020\002\022\033\n\027COMP_USAGE_STATE_ACTIV"
-  "E\020\003\022\031\n\025COMP_USAGE_STATE_BUSY\020\004*\217\002\n\023Compo"
-  "nentAlarmState\022\036\n\032COMP_ALARM_STATE_UNDEF"
-  "INED\020\000\022\034\n\030COMP_ALARM_STATE_UNKNOWN\020\001\022!\n\035"
-  "COMP_ALARM_STATE_UNDER_REPAIR\020\002\022\035\n\031COMP_"
-  "ALARM_STATE_CRITICAL\020\003\022\032\n\026COMP_ALARM_STA"
-  "TE_MAJOR\020\004\022\032\n\026COMP_ALARM_STATE_MINOR\020\005\022\034"
-  "\n\030COMP_ALARM_STATE_WARNING\020\006\022\"\n\036COMP_ALA"
-  "RM_STATE_INDETERMINATE\020\007*\274\001\n\025ComponentSt"
-  "andbyState\022 \n\034COMP_STANDBY_STATE_UNDEFIN"
-  "ED\020\000\022\036\n\032COMP_STANDBY_STATE_UNKNOWN\020\001\022\032\n\026"
-  "COMP_STANDBY_STATE_HOT\020\002\022\033\n\027COMP_STANDBY"
-  "_STATE_COLD\020\003\022(\n$COMP_STANDBY_STATE_PROV"
-  "IDING_SERVICE\020\004*\211\003\n\rDataValueType\022\030\n\024VAL"
-  "UE_TYPE_UNDEFINED\020\000\022\024\n\020VALUE_TYPE_OTHER\020"
-  "\001\022\026\n\022VALUE_TYPE_UNKNOWN\020\002\022\027\n\023VALUE_TYPE_"
-  "VOLTS_AC\020\003\022\027\n\023VALUE_TYPE_VOLTS_DC\020\004\022\026\n\022V"
-  "ALUE_TYPE_AMPERES\020\005\022\024\n\020VALUE_TYPE_WATTS\020"
-  "\006\022\024\n\020VALUE_TYPE_HERTZ\020\007\022\026\n\022VALUE_TYPE_CE"
-  "LSIUS\020\010\022\031\n\025VALUE_TYPE_PERCENT_RH\020\t\022\022\n\016VA"
-  "LUE_TYPE_RPM\020\n\022\022\n\016VALUE_TYPE_CMM\020\013\022\032\n\026VA"
-  "LUE_TYPE_TRUTH_VALUE\020\014\022\026\n\022VALUE_TYPE_PER"
-  "CENT\020\r\022\025\n\021VALUE_TYPE_METERS\020\016\022\024\n\020VALUE_T"
-  "YPE_BYTES\020\017*\244\003\n\nValueScale\022\031\n\025VALUE_SCAL"
-  "E_UNDEFINED\020\000\022\025\n\021VALUE_SCALE_YOCTO\020\001\022\025\n\021"
-  "VALUE_SCALE_ZEPTO\020\002\022\024\n\020VALUE_SCALE_ATTO\020"
-  "\003\022\025\n\021VALUE_SCALE_FEMTO\020\004\022\024\n\020VALUE_SCALE_"
-  "PICO\020\005\022\024\n\020VALUE_SCALE_NANO\020\006\022\025\n\021VALUE_SC"
-  "ALE_MICRO\020\007\022\025\n\021VALUE_SCALE_MILLI\020\010\022\025\n\021VA"
-  "LUE_SCALE_UNITS\020\t\022\024\n\020VALUE_SCALE_KILO\020\n\022"
-  "\024\n\020VALUE_SCALE_MEGA\020\013\022\024\n\020VALUE_SCALE_GIG"
-  "A\020\014\022\024\n\020VALUE_SCALE_TERA\020\r\022\024\n\020VALUE_SCALE"
-  "_PETA\020\016\022\023\n\017VALUE_SCALE_EXA\020\017\022\025\n\021VALUE_SC"
-  "ALE_ZETTA\020\020\022\025\n\021VALUE_SCALE_YOTTA\020\021*\202\001\n\014S"
-  "ensorStatus\022\033\n\027SENSOR_STATUS_UNDEFINED\020\000"
-  "\022\024\n\020SENSOR_STATUS_OK\020\001\022\035\n\031SENSOR_STATUS_"
-  "UNAVAILABLE\020\002\022 \n\034SENSOR_STATUS_NONOPERAT"
-  "IONAL\020\003B;Z9github.com/opencord/device-ma"
-  "nagement-interface/v3/go/dmib\006proto3"
+  "\020\004\022\010\n\004CPON\020\005\022\013\n\007NG_PON2\020\006\022\010\n\004EPON\020\007\"\350\005\n\t"
+  "Component\022\014\n\004name\030\001 \001(\t\022!\n\005class\030\002 \001(\0162\022"
+  ".dmi.ComponentType\022\023\n\013description\030\003 \001(\t\022"
+  "\016\n\006parent\030\004 \001(\t\022\026\n\016parent_rel_pos\030\005 \001(\005\022"
+  " \n\010children\030\006 \003(\0132\016.dmi.Component\022\024\n\014har"
+  "dware_rev\030\007 \001(\t\022\024\n\014firmware_rev\030\010 \001(\t\022\024\n"
+  "\014software_rev\030\t \001(\t\022\022\n\nserial_num\030\n \001(\t\022"
+  "\020\n\010mfg_name\030\013 \001(\t\022\022\n\nmodel_name\030\014 \001(\t\022\r\n"
+  "\005alias\030\r \001(\t\022\020\n\010asset_id\030\016 \001(\t\022\016\n\006is_fru"
+  "\030\017 \001(\010\022,\n\010mfg_date\030\020 \001(\0132\032.google.protob"
+  "uf.Timestamp\022\025\n\003uri\030\021 \001(\0132\010.dmi.Uri\022\027\n\004u"
+  "uid\030\022 \001(\0132\t.dmi.Uuid\022\"\n\005state\030\023 \001(\0132\023.dm"
+  "i.ComponentState\022-\n\013sensor_data\030\024 \003(\0132\030."
+  "dmi.ComponentSensorData\0221\n\tport_attr\0302 \001"
+  "(\0132\034.dmi.PortComponentAttributesH\000\022;\n\016co"
+  "ntainer_attr\0303 \001(\0132!.dmi.ContainerCompon"
+  "entAttributesH\000\022/\n\010psu_attr\0304 \001(\0132\033.dmi."
+  "PsuComponentAttributesH\000\022@\n\020transceiver_"
+  "attr\0305 \001(\0132$.dmi.TransceiverComponentsAt"
+  "tributesH\000B\n\n\010specific\"\212\001\n\010Hardware\022/\n\013l"
+  "ast_change\030\001 \001(\0132\032.google.protobuf.Times"
+  "tamp\022\034\n\004root\030\002 \001(\0132\016.dmi.Component\022/\n\013la"
+  "st_booted\030\003 \001(\0132\032.google.protobuf.Timest"
+  "amp\"\252\002\n\023ModifiableComponent\022\014\n\004name\030\001 \001("
+  "\t\022!\n\005class\030\002 \001(\0162\022.dmi.ComponentType\022\036\n\006"
+  "parent\030\003 \001(\0132\016.dmi.Component\022\026\n\016parent_r"
+  "el_pos\030\004 \001(\005\022\r\n\005alias\030\005 \001(\t\022\020\n\010asset_id\030"
+  "\006 \001(\t\022\025\n\003uri\030\007 \001(\0132\010.dmi.Uri\022-\n\013admin_st"
+  "ate\030\010 \001(\0162\030.dmi.ComponentAdminState\0227\n\tp"
+  "ort_attr\0302 \001(\0132\".dmi.PortComponentChange"
+  "AttributesH\000B\n\n\010specific*\264\003\n\rComponentTy"
+  "pe\022\034\n\030COMPONENT_TYPE_UNDEFINED\020\000\022\032\n\026COMP"
+  "ONENT_TYPE_UNKNOWN\020\001\022\032\n\026COMPONENT_TYPE_C"
+  "HASSIS\020\002\022\034\n\030COMPONENT_TYPE_BACKPLANE\020\003\022\034"
+  "\n\030COMPONENT_TYPE_CONTAINER\020\004\022\037\n\033COMPONEN"
+  "T_TYPE_POWER_SUPPLY\020\005\022\026\n\022COMPONENT_TYPE_"
+  "FAN\020\006\022\031\n\025COMPONENT_TYPE_SENSOR\020\007\022\031\n\025COMP"
+  "ONENT_TYPE_MODULE\020\010\022\027\n\023COMPONENT_TYPE_PO"
+  "RT\020\t\022\026\n\022COMPONENT_TYPE_CPU\020\n\022\032\n\026COMPONEN"
+  "T_TYPE_BATTERY\020\013\022\032\n\026COMPONENT_TYPE_STORA"
+  "GE\020\014\022\031\n\025COMPONENT_TYPE_MEMORY\020\r\022\036\n\032COMPO"
+  "NENT_TYPE_TRANSCEIVER\020\016*\263\001\n\023ComponentAdm"
+  "inState\022\036\n\032COMP_ADMIN_STATE_UNDEFINED\020\000\022"
+  "\034\n\030COMP_ADMIN_STATE_UNKNOWN\020\001\022\033\n\027COMP_AD"
+  "MIN_STATE_LOCKED\020\002\022\"\n\036COMP_ADMIN_STATE_S"
+  "HUTTING_DOWN\020\003\022\035\n\031COMP_ADMIN_STATE_UNLOC"
+  "KED\020\004*\250\001\n\022ComponentOperState\022\035\n\031COMP_OPE"
+  "R_STATE_UNDEFINED\020\000\022\033\n\027COMP_OPER_STATE_U"
+  "NKNOWN\020\001\022\034\n\030COMP_OPER_STATE_DISABLED\020\002\022\033"
+  "\n\027COMP_OPER_STATE_ENABLED\020\003\022\033\n\027COMP_OPER"
+  "_STATE_TESTING\020\004*\246\001\n\023ComponentUsageState"
+  "\022\036\n\032COMP_USAGE_STATE_UNDEFINED\020\000\022\034\n\030COMP"
+  "_USAGE_STATE_UNKNOWN\020\001\022\031\n\025COMP_USAGE_STA"
+  "TE_IDLE\020\002\022\033\n\027COMP_USAGE_STATE_ACTIVE\020\003\022\031"
+  "\n\025COMP_USAGE_STATE_BUSY\020\004*\217\002\n\023ComponentA"
+  "larmState\022\036\n\032COMP_ALARM_STATE_UNDEFINED\020"
+  "\000\022\034\n\030COMP_ALARM_STATE_UNKNOWN\020\001\022!\n\035COMP_"
+  "ALARM_STATE_UNDER_REPAIR\020\002\022\035\n\031COMP_ALARM"
+  "_STATE_CRITICAL\020\003\022\032\n\026COMP_ALARM_STATE_MA"
+  "JOR\020\004\022\032\n\026COMP_ALARM_STATE_MINOR\020\005\022\034\n\030COM"
+  "P_ALARM_STATE_WARNING\020\006\022\"\n\036COMP_ALARM_ST"
+  "ATE_INDETERMINATE\020\007*\274\001\n\025ComponentStandby"
+  "State\022 \n\034COMP_STANDBY_STATE_UNDEFINED\020\000\022"
+  "\036\n\032COMP_STANDBY_STATE_UNKNOWN\020\001\022\032\n\026COMP_"
+  "STANDBY_STATE_HOT\020\002\022\033\n\027COMP_STANDBY_STAT"
+  "E_COLD\020\003\022(\n$COMP_STANDBY_STATE_PROVIDING"
+  "_SERVICE\020\004*\211\003\n\rDataValueType\022\030\n\024VALUE_TY"
+  "PE_UNDEFINED\020\000\022\024\n\020VALUE_TYPE_OTHER\020\001\022\026\n\022"
+  "VALUE_TYPE_UNKNOWN\020\002\022\027\n\023VALUE_TYPE_VOLTS"
+  "_AC\020\003\022\027\n\023VALUE_TYPE_VOLTS_DC\020\004\022\026\n\022VALUE_"
+  "TYPE_AMPERES\020\005\022\024\n\020VALUE_TYPE_WATTS\020\006\022\024\n\020"
+  "VALUE_TYPE_HERTZ\020\007\022\026\n\022VALUE_TYPE_CELSIUS"
+  "\020\010\022\031\n\025VALUE_TYPE_PERCENT_RH\020\t\022\022\n\016VALUE_T"
+  "YPE_RPM\020\n\022\022\n\016VALUE_TYPE_CMM\020\013\022\032\n\026VALUE_T"
+  "YPE_TRUTH_VALUE\020\014\022\026\n\022VALUE_TYPE_PERCENT\020"
+  "\r\022\025\n\021VALUE_TYPE_METERS\020\016\022\024\n\020VALUE_TYPE_B"
+  "YTES\020\017*\244\003\n\nValueScale\022\031\n\025VALUE_SCALE_UND"
+  "EFINED\020\000\022\025\n\021VALUE_SCALE_YOCTO\020\001\022\025\n\021VALUE"
+  "_SCALE_ZEPTO\020\002\022\024\n\020VALUE_SCALE_ATTO\020\003\022\025\n\021"
+  "VALUE_SCALE_FEMTO\020\004\022\024\n\020VALUE_SCALE_PICO\020"
+  "\005\022\024\n\020VALUE_SCALE_NANO\020\006\022\025\n\021VALUE_SCALE_M"
+  "ICRO\020\007\022\025\n\021VALUE_SCALE_MILLI\020\010\022\025\n\021VALUE_S"
+  "CALE_UNITS\020\t\022\024\n\020VALUE_SCALE_KILO\020\n\022\024\n\020VA"
+  "LUE_SCALE_MEGA\020\013\022\024\n\020VALUE_SCALE_GIGA\020\014\022\024"
+  "\n\020VALUE_SCALE_TERA\020\r\022\024\n\020VALUE_SCALE_PETA"
+  "\020\016\022\023\n\017VALUE_SCALE_EXA\020\017\022\025\n\021VALUE_SCALE_Z"
+  "ETTA\020\020\022\025\n\021VALUE_SCALE_YOTTA\020\021*\202\001\n\014Sensor"
+  "Status\022\033\n\027SENSOR_STATUS_UNDEFINED\020\000\022\024\n\020S"
+  "ENSOR_STATUS_OK\020\001\022\035\n\031SENSOR_STATUS_UNAVA"
+  "ILABLE\020\002\022 \n\034SENSOR_STATUS_NONOPERATIONAL"
+  "\020\003B;Z9github.com/opencord/device-managem"
+  "ent-interface/v3/go/dmib\006proto3"
   ;
 ::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_2eproto = {
   false, InitDefaults_dmi_2fhw_2eproto, 
   descriptor_table_protodef_dmi_2fhw_2eproto,
-  "dmi/hw.proto", &assign_descriptors_table_dmi_2fhw_2eproto, 5796,
+  "dmi/hw.proto", &assign_descriptors_table_dmi_2fhw_2eproto, 6071,
 };
 
 void AddDescriptors_dmi_2fhw_2eproto() {
@@ -3130,16 +3202,25 @@
 // ===================================================================
 
 void PortComponentAttributes::InitAsDefaultInstance() {
+  ::dmi::_PortComponentAttributes_default_instance_._instance.get_mutable()->pon_id_config_ = const_cast< ::dmi::PonIdConfig*>(
+      ::dmi::PonIdConfig::internal_default_instance());
 }
 class PortComponentAttributes::HasBitSetters {
  public:
+  static const ::dmi::PonIdConfig& pon_id_config(const PortComponentAttributes* msg);
 };
 
+const ::dmi::PonIdConfig&
+PortComponentAttributes::HasBitSetters::pon_id_config(const PortComponentAttributes* msg) {
+  return *msg->pon_id_config_;
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int PortComponentAttributes::kConnectorTypeFieldNumber;
 const int PortComponentAttributes::kSpeedFieldNumber;
 const int PortComponentAttributes::kProtocolFieldNumber;
 const int PortComponentAttributes::kPhysicalLabelFieldNumber;
+const int PortComponentAttributes::kMappingLabelFieldNumber;
+const int PortComponentAttributes::kPonIdConfigFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 PortComponentAttributes::PortComponentAttributes()
@@ -3155,6 +3236,15 @@
   if (from.physical_label().size() > 0) {
     physical_label_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.physical_label_);
   }
+  mapping_label_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.mapping_label().size() > 0) {
+    mapping_label_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.mapping_label_);
+  }
+  if (from.has_pon_id_config()) {
+    pon_id_config_ = new ::dmi::PonIdConfig(*from.pon_id_config_);
+  } else {
+    pon_id_config_ = nullptr;
+  }
   ::memcpy(&connector_type_, &from.connector_type_,
     static_cast<size_t>(reinterpret_cast<char*>(&protocol_) -
     reinterpret_cast<char*>(&connector_type_)) + sizeof(protocol_));
@@ -3165,9 +3255,10 @@
   ::google::protobuf::internal::InitSCC(
       &scc_info_PortComponentAttributes_dmi_2fhw_2eproto.base);
   physical_label_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  ::memset(&connector_type_, 0, static_cast<size_t>(
+  mapping_label_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&pon_id_config_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&protocol_) -
-      reinterpret_cast<char*>(&connector_type_)) + sizeof(protocol_));
+      reinterpret_cast<char*>(&pon_id_config_)) + sizeof(protocol_));
 }
 
 PortComponentAttributes::~PortComponentAttributes() {
@@ -3177,6 +3268,8 @@
 
 void PortComponentAttributes::SharedDtor() {
   physical_label_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  mapping_label_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete pon_id_config_;
 }
 
 void PortComponentAttributes::SetCachedSize(int size) const {
@@ -3195,6 +3288,11 @@
   (void) cached_has_bits;
 
   physical_label_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  mapping_label_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (GetArenaNoVirtual() == nullptr && pon_id_config_ != nullptr) {
+    delete pon_id_config_;
+  }
+  pon_id_config_ = nullptr;
   ::memset(&connector_type_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&protocol_) -
       reinterpret_cast<char*>(&connector_type_)) + sizeof(protocol_));
@@ -3254,6 +3352,35 @@
         ptr += size;
         break;
       }
+      // string mapping_label = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.PortComponentAttributes.mapping_label");
+        object = msg->mutable_mapping_label();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // .dmi.PonIdConfig pon_id_config = 6;
+      case 6: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 50) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::PonIdConfig::_InternalParse;
+        object = msg->mutable_pon_id_config();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -3345,6 +3472,32 @@
         break;
       }
 
+      // string mapping_label = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_mapping_label()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->mapping_label().data(), static_cast<int>(this->mapping_label().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.PortComponentAttributes.mapping_label"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .dmi.PonIdConfig pon_id_config = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (50 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_pon_id_config()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -3400,6 +3553,22 @@
       4, this->physical_label(), output);
   }
 
+  // string mapping_label = 5;
+  if (this->mapping_label().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->mapping_label().data(), static_cast<int>(this->mapping_label().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.PortComponentAttributes.mapping_label");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->mapping_label(), output);
+  }
+
+  // .dmi.PonIdConfig pon_id_config = 6;
+  if (this->has_pon_id_config()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      6, HasBitSetters::pon_id_config(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -3442,6 +3611,24 @@
         4, this->physical_label(), target);
   }
 
+  // string mapping_label = 5;
+  if (this->mapping_label().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->mapping_label().data(), static_cast<int>(this->mapping_label().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.PortComponentAttributes.mapping_label");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->mapping_label(), target);
+  }
+
+  // .dmi.PonIdConfig pon_id_config = 6;
+  if (this->has_pon_id_config()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        6, HasBitSetters::pon_id_config(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -3470,6 +3657,20 @@
         this->physical_label());
   }
 
+  // string mapping_label = 5;
+  if (this->mapping_label().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->mapping_label());
+  }
+
+  // .dmi.PonIdConfig pon_id_config = 6;
+  if (this->has_pon_id_config()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *pon_id_config_);
+  }
+
   // .dmi.PortComponentAttributes.ConnectorType connector_type = 1;
   if (this->connector_type() != 0) {
     total_size += 1 +
@@ -3519,6 +3720,13 @@
 
     physical_label_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.physical_label_);
   }
+  if (from.mapping_label().size() > 0) {
+
+    mapping_label_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.mapping_label_);
+  }
+  if (from.has_pon_id_config()) {
+    mutable_pon_id_config()->::dmi::PonIdConfig::MergeFrom(from.pon_id_config());
+  }
   if (from.connector_type() != 0) {
     set_connector_type(from.connector_type());
   }
@@ -3557,6 +3765,9 @@
   _internal_metadata_.Swap(&other->_internal_metadata_);
   physical_label_.Swap(&other->physical_label_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
     GetArenaNoVirtual());
+  mapping_label_.Swap(&other->mapping_label_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(pon_id_config_, other->pon_id_config_);
   swap(connector_type_, other->connector_type_);
   swap(speed_, other->speed_);
   swap(protocol_, other->protocol_);
@@ -3570,6 +3781,622 @@
 
 // ===================================================================
 
+void PortComponentChangeAttributes::InitAsDefaultInstance() {
+  ::dmi::_PortComponentChangeAttributes_default_instance_._instance.get_mutable()->pon_id_config_ = const_cast< ::dmi::PonIdConfig*>(
+      ::dmi::PonIdConfig::internal_default_instance());
+}
+class PortComponentChangeAttributes::HasBitSetters {
+ public:
+  static const ::dmi::PonIdConfig& pon_id_config(const PortComponentChangeAttributes* msg);
+};
+
+const ::dmi::PonIdConfig&
+PortComponentChangeAttributes::HasBitSetters::pon_id_config(const PortComponentChangeAttributes* msg) {
+  return *msg->pon_id_config_;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int PortComponentChangeAttributes::kPonIdConfigFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PortComponentChangeAttributes::PortComponentChangeAttributes()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.PortComponentChangeAttributes)
+}
+PortComponentChangeAttributes::PortComponentChangeAttributes(const PortComponentChangeAttributes& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  if (from.has_pon_id_config()) {
+    pon_id_config_ = new ::dmi::PonIdConfig(*from.pon_id_config_);
+  } else {
+    pon_id_config_ = nullptr;
+  }
+  // @@protoc_insertion_point(copy_constructor:dmi.PortComponentChangeAttributes)
+}
+
+void PortComponentChangeAttributes::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base);
+  pon_id_config_ = nullptr;
+}
+
+PortComponentChangeAttributes::~PortComponentChangeAttributes() {
+  // @@protoc_insertion_point(destructor:dmi.PortComponentChangeAttributes)
+  SharedDtor();
+}
+
+void PortComponentChangeAttributes::SharedDtor() {
+  if (this != internal_default_instance()) delete pon_id_config_;
+}
+
+void PortComponentChangeAttributes::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const PortComponentChangeAttributes& PortComponentChangeAttributes::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void PortComponentChangeAttributes::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.PortComponentChangeAttributes)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  if (GetArenaNoVirtual() == nullptr && pon_id_config_ != nullptr) {
+    delete pon_id_config_;
+  }
+  pon_id_config_ = nullptr;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* PortComponentChangeAttributes::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<PortComponentChangeAttributes*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .dmi.PonIdConfig pon_id_config = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::PonIdConfig::_InternalParse;
+        object = msg->mutable_pon_id_config();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+len_delim_till_end:
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                               {parser_till_end, object}, size);
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool PortComponentChangeAttributes::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.PortComponentChangeAttributes)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .dmi.PonIdConfig pon_id_config = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_pon_id_config()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.PortComponentChangeAttributes)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.PortComponentChangeAttributes)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void PortComponentChangeAttributes::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.PortComponentChangeAttributes)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.PonIdConfig pon_id_config = 1;
+  if (this->has_pon_id_config()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::pon_id_config(this), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.PortComponentChangeAttributes)
+}
+
+::google::protobuf::uint8* PortComponentChangeAttributes::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.PortComponentChangeAttributes)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.PonIdConfig pon_id_config = 1;
+  if (this->has_pon_id_config()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::pon_id_config(this), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.PortComponentChangeAttributes)
+  return target;
+}
+
+size_t PortComponentChangeAttributes::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.PortComponentChangeAttributes)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .dmi.PonIdConfig pon_id_config = 1;
+  if (this->has_pon_id_config()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *pon_id_config_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void PortComponentChangeAttributes::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.PortComponentChangeAttributes)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PortComponentChangeAttributes* source =
+      ::google::protobuf::DynamicCastToGenerated<PortComponentChangeAttributes>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.PortComponentChangeAttributes)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.PortComponentChangeAttributes)
+    MergeFrom(*source);
+  }
+}
+
+void PortComponentChangeAttributes::MergeFrom(const PortComponentChangeAttributes& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.PortComponentChangeAttributes)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.has_pon_id_config()) {
+    mutable_pon_id_config()->::dmi::PonIdConfig::MergeFrom(from.pon_id_config());
+  }
+}
+
+void PortComponentChangeAttributes::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.PortComponentChangeAttributes)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PortComponentChangeAttributes::CopyFrom(const PortComponentChangeAttributes& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.PortComponentChangeAttributes)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PortComponentChangeAttributes::IsInitialized() const {
+  return true;
+}
+
+void PortComponentChangeAttributes::Swap(PortComponentChangeAttributes* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void PortComponentChangeAttributes::InternalSwap(PortComponentChangeAttributes* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(pon_id_config_, other->pon_id_config_);
+}
+
+::google::protobuf::Metadata PortComponentChangeAttributes::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_2eproto);
+  return ::file_level_metadata_dmi_2fhw_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void PonIdConfig::InitAsDefaultInstance() {
+}
+class PonIdConfig::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int PonIdConfig::kPonIdFieldNumber;
+const int PonIdConfig::kPonIdTransmitPeriodicityFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PonIdConfig::PonIdConfig()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.PonIdConfig)
+}
+PonIdConfig::PonIdConfig(const PonIdConfig& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  pon_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.pon_id().size() > 0) {
+    pon_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.pon_id_);
+  }
+  pon_id_transmit_periodicity_ = from.pon_id_transmit_periodicity_;
+  // @@protoc_insertion_point(copy_constructor:dmi.PonIdConfig)
+}
+
+void PonIdConfig::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base);
+  pon_id_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pon_id_transmit_periodicity_ = 0u;
+}
+
+PonIdConfig::~PonIdConfig() {
+  // @@protoc_insertion_point(destructor:dmi.PonIdConfig)
+  SharedDtor();
+}
+
+void PonIdConfig::SharedDtor() {
+  pon_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void PonIdConfig::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const PonIdConfig& PonIdConfig::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_PonIdConfig_dmi_2fhw_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void PonIdConfig::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.PonIdConfig)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  pon_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  pon_id_transmit_periodicity_ = 0u;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* PonIdConfig::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<PonIdConfig*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // bytes pon_id = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        object = msg->mutable_pon_id();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParser;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheck(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // uint32 pon_id_transmit_periodicity = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        msg->set_pon_id_transmit_periodicity(::google::protobuf::internal::ReadVarint(&ptr));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+string_till_end:
+  static_cast<::std::string*>(object)->clear();
+  static_cast<::std::string*>(object)->reserve(size);
+  goto len_delim_till_end;
+len_delim_till_end:
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                               {parser_till_end, object}, size);
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool PonIdConfig::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.PonIdConfig)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // bytes pon_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+                input, this->mutable_pon_id()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint32 pon_id_transmit_periodicity = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, &pon_id_transmit_periodicity_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.PonIdConfig)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.PonIdConfig)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void PonIdConfig::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.PonIdConfig)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bytes pon_id = 1;
+  if (this->pon_id().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
+      1, this->pon_id(), output);
+  }
+
+  // uint32 pon_id_transmit_periodicity = 2;
+  if (this->pon_id_transmit_periodicity() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->pon_id_transmit_periodicity(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.PonIdConfig)
+}
+
+::google::protobuf::uint8* PonIdConfig::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.PonIdConfig)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // bytes pon_id = 1;
+  if (this->pon_id().size() > 0) {
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
+        1, this->pon_id(), target);
+  }
+
+  // uint32 pon_id_transmit_periodicity = 2;
+  if (this->pon_id_transmit_periodicity() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->pon_id_transmit_periodicity(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.PonIdConfig)
+  return target;
+}
+
+size_t PonIdConfig::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.PonIdConfig)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // bytes pon_id = 1;
+  if (this->pon_id().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::BytesSize(
+        this->pon_id());
+  }
+
+  // uint32 pon_id_transmit_periodicity = 2;
+  if (this->pon_id_transmit_periodicity() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt32Size(
+        this->pon_id_transmit_periodicity());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void PonIdConfig::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.PonIdConfig)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PonIdConfig* source =
+      ::google::protobuf::DynamicCastToGenerated<PonIdConfig>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.PonIdConfig)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.PonIdConfig)
+    MergeFrom(*source);
+  }
+}
+
+void PonIdConfig::MergeFrom(const PonIdConfig& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.PonIdConfig)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.pon_id().size() > 0) {
+
+    pon_id_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.pon_id_);
+  }
+  if (from.pon_id_transmit_periodicity() != 0) {
+    set_pon_id_transmit_periodicity(from.pon_id_transmit_periodicity());
+  }
+}
+
+void PonIdConfig::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.PonIdConfig)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PonIdConfig::CopyFrom(const PonIdConfig& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.PonIdConfig)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PonIdConfig::IsInitialized() const {
+  return true;
+}
+
+void PonIdConfig::Swap(PonIdConfig* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void PonIdConfig::InternalSwap(PonIdConfig* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  pon_id_.Swap(&other->pon_id_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(pon_id_transmit_periodicity_, other->pon_id_transmit_periodicity_);
+}
+
+::google::protobuf::Metadata PonIdConfig::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_2eproto);
+  return ::file_level_metadata_dmi_2fhw_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
 void ContainerComponentAttributes::InitAsDefaultInstance() {
 }
 class ContainerComponentAttributes::HasBitSetters {
@@ -7076,11 +7903,14 @@
       ::dmi::Component::internal_default_instance());
   ::dmi::_ModifiableComponent_default_instance_._instance.get_mutable()->uri_ = const_cast< ::dmi::Uri*>(
       ::dmi::Uri::internal_default_instance());
+  ::dmi::_ModifiableComponent_default_instance_.port_attr_ = const_cast< ::dmi::PortComponentChangeAttributes*>(
+      ::dmi::PortComponentChangeAttributes::internal_default_instance());
 }
 class ModifiableComponent::HasBitSetters {
  public:
   static const ::dmi::Component& parent(const ModifiableComponent* msg);
   static const ::dmi::Uri& uri(const ModifiableComponent* msg);
+  static const ::dmi::PortComponentChangeAttributes& port_attr(const ModifiableComponent* msg);
 };
 
 const ::dmi::Component&
@@ -7091,6 +7921,24 @@
 ModifiableComponent::HasBitSetters::uri(const ModifiableComponent* msg) {
   return *msg->uri_;
 }
+const ::dmi::PortComponentChangeAttributes&
+ModifiableComponent::HasBitSetters::port_attr(const ModifiableComponent* msg) {
+  return *msg->specific_.port_attr_;
+}
+void ModifiableComponent::set_allocated_port_attr(::dmi::PortComponentChangeAttributes* port_attr) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  clear_specific();
+  if (port_attr) {
+    ::google::protobuf::Arena* submessage_arena = nullptr;
+    if (message_arena != submessage_arena) {
+      port_attr = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, port_attr, submessage_arena);
+    }
+    set_has_port_attr();
+    specific_.port_attr_ = port_attr;
+  }
+  // @@protoc_insertion_point(field_set_allocated:dmi.ModifiableComponent.port_attr)
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int ModifiableComponent::kNameFieldNumber;
 const int ModifiableComponent::kClassFieldNumber;
@@ -7100,6 +7948,7 @@
 const int ModifiableComponent::kAssetIdFieldNumber;
 const int ModifiableComponent::kUriFieldNumber;
 const int ModifiableComponent::kAdminStateFieldNumber;
+const int ModifiableComponent::kPortAttrFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 ModifiableComponent::ModifiableComponent()
@@ -7136,6 +7985,16 @@
   ::memcpy(&class__, &from.class__,
     static_cast<size_t>(reinterpret_cast<char*>(&admin_state_) -
     reinterpret_cast<char*>(&class__)) + sizeof(admin_state_));
+  clear_has_specific();
+  switch (from.specific_case()) {
+    case kPortAttr: {
+      mutable_port_attr()->::dmi::PortComponentChangeAttributes::MergeFrom(from.port_attr());
+      break;
+    }
+    case SPECIFIC_NOT_SET: {
+      break;
+    }
+  }
   // @@protoc_insertion_point(copy_constructor:dmi.ModifiableComponent)
 }
 
@@ -7148,6 +8007,7 @@
   ::memset(&parent_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&admin_state_) -
       reinterpret_cast<char*>(&parent_)) + sizeof(admin_state_));
+  clear_has_specific();
 }
 
 ModifiableComponent::~ModifiableComponent() {
@@ -7161,6 +8021,9 @@
   asset_id_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (this != internal_default_instance()) delete parent_;
   if (this != internal_default_instance()) delete uri_;
+  if (has_specific()) {
+    clear_specific();
+  }
 }
 
 void ModifiableComponent::SetCachedSize(int size) const {
@@ -7172,6 +8035,21 @@
 }
 
 
+void ModifiableComponent::clear_specific() {
+// @@protoc_insertion_point(one_of_clear_start:dmi.ModifiableComponent)
+  switch (specific_case()) {
+    case kPortAttr: {
+      delete specific_.port_attr_;
+      break;
+    }
+    case SPECIFIC_NOT_SET: {
+      break;
+    }
+  }
+  _oneof_case_[0] = SPECIFIC_NOT_SET;
+}
+
+
 void ModifiableComponent::Clear() {
 // @@protoc_insertion_point(message_clear_start:dmi.ModifiableComponent)
   ::google::protobuf::uint32 cached_has_bits = 0;
@@ -7192,6 +8070,7 @@
   ::memset(&class__, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&admin_state_) -
       reinterpret_cast<char*>(&class__)) + sizeof(admin_state_));
+  clear_specific();
   _internal_metadata_.Clear();
 }
 
@@ -7305,6 +8184,19 @@
         GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
         break;
       }
+      // .dmi.PortComponentChangeAttributes port_attr = 50;
+      case 50: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 146) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::PortComponentChangeAttributes::_InternalParse;
+        object = msg->mutable_port_attr();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -7335,7 +8227,7 @@
   ::google::protobuf::uint32 tag;
   // @@protoc_insertion_point(parse_start:dmi.ModifiableComponent)
   for (;;) {
-    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
@@ -7447,6 +8339,17 @@
         break;
       }
 
+      // .dmi.PortComponentChangeAttributes port_attr = 50;
+      case 50: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (402 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_port_attr()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -7533,6 +8436,12 @@
       8, this->admin_state(), output);
   }
 
+  // .dmi.PortComponentChangeAttributes port_attr = 50;
+  if (has_port_attr()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      50, HasBitSetters::port_attr(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -7610,6 +8519,13 @@
       8, this->admin_state(), target);
   }
 
+  // .dmi.PortComponentChangeAttributes port_attr = 50;
+  if (has_port_attr()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        50, HasBitSetters::port_attr(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -7685,6 +8601,18 @@
       ::google::protobuf::internal::WireFormatLite::EnumSize(this->admin_state());
   }
 
+  switch (specific_case()) {
+    // .dmi.PortComponentChangeAttributes port_attr = 50;
+    case kPortAttr: {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *specific_.port_attr_);
+      break;
+    }
+    case SPECIFIC_NOT_SET: {
+      break;
+    }
+  }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   SetCachedSize(cached_size);
   return total_size;
@@ -7739,6 +8667,15 @@
   if (from.admin_state() != 0) {
     set_admin_state(from.admin_state());
   }
+  switch (from.specific_case()) {
+    case kPortAttr: {
+      mutable_port_attr()->::dmi::PortComponentChangeAttributes::MergeFrom(from.port_attr());
+      break;
+    }
+    case SPECIFIC_NOT_SET: {
+      break;
+    }
+  }
 }
 
 void ModifiableComponent::CopyFrom(const ::google::protobuf::Message& from) {
@@ -7777,6 +8714,8 @@
   swap(class__, other->class__);
   swap(parent_rel_pos_, other->parent_rel_pos_);
   swap(admin_state_, other->admin_state_);
+  swap(specific_, other->specific_);
+  swap(_oneof_case_[0], other->_oneof_case_[0]);
 }
 
 ::google::protobuf::Metadata ModifiableComponent::GetMetadata() const {
@@ -7807,6 +8746,12 @@
 template<> PROTOBUF_NOINLINE ::dmi::PortComponentAttributes* Arena::CreateMaybeMessage< ::dmi::PortComponentAttributes >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::PortComponentAttributes >(arena);
 }
+template<> PROTOBUF_NOINLINE ::dmi::PortComponentChangeAttributes* Arena::CreateMaybeMessage< ::dmi::PortComponentChangeAttributes >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::PortComponentChangeAttributes >(arena);
+}
+template<> PROTOBUF_NOINLINE ::dmi::PonIdConfig* Arena::CreateMaybeMessage< ::dmi::PonIdConfig >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::PonIdConfig >(arena);
+}
 template<> PROTOBUF_NOINLINE ::dmi::ContainerComponentAttributes* Arena::CreateMaybeMessage< ::dmi::ContainerComponentAttributes >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::ContainerComponentAttributes >(arena);
 }
diff --git a/cpp/dmi/hw.pb.h b/cpp/dmi/hw.pb.h
index f4b9c89..b1b3127 100644
--- a/cpp/dmi/hw.pb.h
+++ b/cpp/dmi/hw.pb.h
@@ -43,7 +43,7 @@
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::ParseTable schema[12]
+  static const ::google::protobuf::internal::ParseTable schema[14]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
@@ -72,9 +72,15 @@
 class ModifiableComponent;
 class ModifiableComponentDefaultTypeInternal;
 extern ModifiableComponentDefaultTypeInternal _ModifiableComponent_default_instance_;
+class PonIdConfig;
+class PonIdConfigDefaultTypeInternal;
+extern PonIdConfigDefaultTypeInternal _PonIdConfig_default_instance_;
 class PortComponentAttributes;
 class PortComponentAttributesDefaultTypeInternal;
 extern PortComponentAttributesDefaultTypeInternal _PortComponentAttributes_default_instance_;
+class PortComponentChangeAttributes;
+class PortComponentChangeAttributesDefaultTypeInternal;
+extern PortComponentChangeAttributesDefaultTypeInternal _PortComponentChangeAttributes_default_instance_;
 class PsuComponentAttributes;
 class PsuComponentAttributesDefaultTypeInternal;
 extern PsuComponentAttributesDefaultTypeInternal _PsuComponentAttributes_default_instance_;
@@ -97,7 +103,9 @@
 template<> ::dmi::Hardware* Arena::CreateMaybeMessage<::dmi::Hardware>(Arena*);
 template<> ::dmi::HardwareID* Arena::CreateMaybeMessage<::dmi::HardwareID>(Arena*);
 template<> ::dmi::ModifiableComponent* Arena::CreateMaybeMessage<::dmi::ModifiableComponent>(Arena*);
+template<> ::dmi::PonIdConfig* Arena::CreateMaybeMessage<::dmi::PonIdConfig>(Arena*);
 template<> ::dmi::PortComponentAttributes* Arena::CreateMaybeMessage<::dmi::PortComponentAttributes>(Arena*);
+template<> ::dmi::PortComponentChangeAttributes* Arena::CreateMaybeMessage<::dmi::PortComponentChangeAttributes>(Arena*);
 template<> ::dmi::PsuComponentAttributes* Arena::CreateMaybeMessage<::dmi::PsuComponentAttributes>(Arena*);
 template<> ::dmi::TransceiverComponentsAttributes* Arena::CreateMaybeMessage<::dmi::TransceiverComponentsAttributes>(Arena*);
 template<> ::dmi::Uri* Arena::CreateMaybeMessage<::dmi::Uri>(Arena*);
@@ -1443,6 +1451,29 @@
   ::std::string* release_physical_label();
   void set_allocated_physical_label(::std::string* physical_label);
 
+  // string mapping_label = 5;
+  void clear_mapping_label();
+  static const int kMappingLabelFieldNumber = 5;
+  const ::std::string& mapping_label() const;
+  void set_mapping_label(const ::std::string& value);
+  #if LANG_CXX11
+  void set_mapping_label(::std::string&& value);
+  #endif
+  void set_mapping_label(const char* value);
+  void set_mapping_label(const char* value, size_t size);
+  ::std::string* mutable_mapping_label();
+  ::std::string* release_mapping_label();
+  void set_allocated_mapping_label(::std::string* mapping_label);
+
+  // .dmi.PonIdConfig pon_id_config = 6;
+  bool has_pon_id_config() const;
+  void clear_pon_id_config();
+  static const int kPonIdConfigFieldNumber = 6;
+  const ::dmi::PonIdConfig& pon_id_config() const;
+  ::dmi::PonIdConfig* release_pon_id_config();
+  ::dmi::PonIdConfig* mutable_pon_id_config();
+  void set_allocated_pon_id_config(::dmi::PonIdConfig* pon_id_config);
+
   // .dmi.PortComponentAttributes.ConnectorType connector_type = 1;
   void clear_connector_type();
   static const int kConnectorTypeFieldNumber = 1;
@@ -1467,6 +1498,8 @@
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::ArenaStringPtr physical_label_;
+  ::google::protobuf::internal::ArenaStringPtr mapping_label_;
+  ::dmi::PonIdConfig* pon_id_config_;
   int connector_type_;
   int speed_;
   int protocol_;
@@ -1475,6 +1508,248 @@
 };
 // -------------------------------------------------------------------
 
+class PortComponentChangeAttributes final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.PortComponentChangeAttributes) */ {
+ public:
+  PortComponentChangeAttributes();
+  virtual ~PortComponentChangeAttributes();
+
+  PortComponentChangeAttributes(const PortComponentChangeAttributes& from);
+
+  inline PortComponentChangeAttributes& operator=(const PortComponentChangeAttributes& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  PortComponentChangeAttributes(PortComponentChangeAttributes&& from) noexcept
+    : PortComponentChangeAttributes() {
+    *this = ::std::move(from);
+  }
+
+  inline PortComponentChangeAttributes& operator=(PortComponentChangeAttributes&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const PortComponentChangeAttributes& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const PortComponentChangeAttributes* internal_default_instance() {
+    return reinterpret_cast<const PortComponentChangeAttributes*>(
+               &_PortComponentChangeAttributes_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void Swap(PortComponentChangeAttributes* other);
+  friend void swap(PortComponentChangeAttributes& a, PortComponentChangeAttributes& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline PortComponentChangeAttributes* New() const final {
+    return CreateMaybeMessage<PortComponentChangeAttributes>(nullptr);
+  }
+
+  PortComponentChangeAttributes* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<PortComponentChangeAttributes>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const PortComponentChangeAttributes& from);
+  void MergeFrom(const PortComponentChangeAttributes& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(PortComponentChangeAttributes* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .dmi.PonIdConfig pon_id_config = 1;
+  bool has_pon_id_config() const;
+  void clear_pon_id_config();
+  static const int kPonIdConfigFieldNumber = 1;
+  const ::dmi::PonIdConfig& pon_id_config() const;
+  ::dmi::PonIdConfig* release_pon_id_config();
+  ::dmi::PonIdConfig* mutable_pon_id_config();
+  void set_allocated_pon_id_config(::dmi::PonIdConfig* pon_id_config);
+
+  // @@protoc_insertion_point(class_scope:dmi.PortComponentChangeAttributes)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::dmi::PonIdConfig* pon_id_config_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_2eproto;
+};
+// -------------------------------------------------------------------
+
+class PonIdConfig final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.PonIdConfig) */ {
+ public:
+  PonIdConfig();
+  virtual ~PonIdConfig();
+
+  PonIdConfig(const PonIdConfig& from);
+
+  inline PonIdConfig& operator=(const PonIdConfig& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  PonIdConfig(PonIdConfig&& from) noexcept
+    : PonIdConfig() {
+    *this = ::std::move(from);
+  }
+
+  inline PonIdConfig& operator=(PonIdConfig&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const PonIdConfig& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const PonIdConfig* internal_default_instance() {
+    return reinterpret_cast<const PonIdConfig*>(
+               &_PonIdConfig_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    7;
+
+  void Swap(PonIdConfig* other);
+  friend void swap(PonIdConfig& a, PonIdConfig& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline PonIdConfig* New() const final {
+    return CreateMaybeMessage<PonIdConfig>(nullptr);
+  }
+
+  PonIdConfig* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<PonIdConfig>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const PonIdConfig& from);
+  void MergeFrom(const PonIdConfig& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(PonIdConfig* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // bytes pon_id = 1;
+  void clear_pon_id();
+  static const int kPonIdFieldNumber = 1;
+  const ::std::string& pon_id() const;
+  void set_pon_id(const ::std::string& value);
+  #if LANG_CXX11
+  void set_pon_id(::std::string&& value);
+  #endif
+  void set_pon_id(const char* value);
+  void set_pon_id(const void* value, size_t size);
+  ::std::string* mutable_pon_id();
+  ::std::string* release_pon_id();
+  void set_allocated_pon_id(::std::string* pon_id);
+
+  // uint32 pon_id_transmit_periodicity = 2;
+  void clear_pon_id_transmit_periodicity();
+  static const int kPonIdTransmitPeriodicityFieldNumber = 2;
+  ::google::protobuf::uint32 pon_id_transmit_periodicity() const;
+  void set_pon_id_transmit_periodicity(::google::protobuf::uint32 value);
+
+  // @@protoc_insertion_point(class_scope:dmi.PonIdConfig)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr pon_id_;
+  ::google::protobuf::uint32 pon_id_transmit_periodicity_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_2eproto;
+};
+// -------------------------------------------------------------------
+
 class ContainerComponentAttributes final :
     public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.ContainerComponentAttributes) */ {
  public:
@@ -1513,7 +1788,7 @@
                &_ContainerComponentAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    6;
+    8;
 
   void Swap(ContainerComponentAttributes* other);
   friend void swap(ContainerComponentAttributes& a, ContainerComponentAttributes& b) {
@@ -1633,7 +1908,7 @@
                &_PsuComponentAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    7;
+    9;
 
   void Swap(PsuComponentAttributes* other);
   friend void swap(PsuComponentAttributes& a, PsuComponentAttributes& b) {
@@ -1775,7 +2050,7 @@
                &_TransceiverComponentsAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    8;
+    10;
 
   void Swap(TransceiverComponentsAttributes* other);
   friend void swap(TransceiverComponentsAttributes& a, TransceiverComponentsAttributes& b) {
@@ -2041,7 +2316,7 @@
                &_Component_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    9;
+    11;
 
   void Swap(Component* other);
   friend void swap(Component& a, Component& b) {
@@ -2452,7 +2727,7 @@
                &_Hardware_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    10;
+    12;
 
   void Swap(Hardware* other);
   friend void swap(Hardware& a, Hardware& b) {
@@ -2581,13 +2856,18 @@
   }
   static const ModifiableComponent& default_instance();
 
+  enum SpecificCase {
+    kPortAttr = 50,
+    SPECIFIC_NOT_SET = 0,
+  };
+
   static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
   static inline const ModifiableComponent* internal_default_instance() {
     return reinterpret_cast<const ModifiableComponent*>(
                &_ModifiableComponent_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    11;
+    13;
 
   void Swap(ModifiableComponent* other);
   friend void swap(ModifiableComponent& a, ModifiableComponent& b) {
@@ -2722,9 +3002,24 @@
   ::dmi::ComponentAdminState admin_state() const;
   void set_admin_state(::dmi::ComponentAdminState value);
 
+  // .dmi.PortComponentChangeAttributes port_attr = 50;
+  bool has_port_attr() const;
+  void clear_port_attr();
+  static const int kPortAttrFieldNumber = 50;
+  const ::dmi::PortComponentChangeAttributes& port_attr() const;
+  ::dmi::PortComponentChangeAttributes* release_port_attr();
+  ::dmi::PortComponentChangeAttributes* mutable_port_attr();
+  void set_allocated_port_attr(::dmi::PortComponentChangeAttributes* port_attr);
+
+  void clear_specific();
+  SpecificCase specific_case() const;
   // @@protoc_insertion_point(class_scope:dmi.ModifiableComponent)
  private:
   class HasBitSetters;
+  void set_has_port_attr();
+
+  inline bool has_specific() const;
+  inline void clear_has_specific();
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::ArenaStringPtr name_;
@@ -2735,7 +3030,13 @@
   int class__;
   ::google::protobuf::int32 parent_rel_pos_;
   int admin_state_;
+  union SpecificUnion {
+    SpecificUnion() {}
+    ::dmi::PortComponentChangeAttributes* port_attr_;
+  } specific_;
   mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  ::google::protobuf::uint32 _oneof_case_[1];
+
   friend struct ::TableStruct_dmi_2fhw_2eproto;
 };
 // ===================================================================
@@ -3373,6 +3674,236 @@
   // @@protoc_insertion_point(field_set_allocated:dmi.PortComponentAttributes.physical_label)
 }
 
+// string mapping_label = 5;
+inline void PortComponentAttributes::clear_mapping_label() {
+  mapping_label_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& PortComponentAttributes::mapping_label() const {
+  // @@protoc_insertion_point(field_get:dmi.PortComponentAttributes.mapping_label)
+  return mapping_label_.GetNoArena();
+}
+inline void PortComponentAttributes::set_mapping_label(const ::std::string& value) {
+  
+  mapping_label_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:dmi.PortComponentAttributes.mapping_label)
+}
+#if LANG_CXX11
+inline void PortComponentAttributes::set_mapping_label(::std::string&& value) {
+  
+  mapping_label_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:dmi.PortComponentAttributes.mapping_label)
+}
+#endif
+inline void PortComponentAttributes::set_mapping_label(const char* value) {
+  GOOGLE_DCHECK(value != nullptr);
+  
+  mapping_label_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:dmi.PortComponentAttributes.mapping_label)
+}
+inline void PortComponentAttributes::set_mapping_label(const char* value, size_t size) {
+  
+  mapping_label_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:dmi.PortComponentAttributes.mapping_label)
+}
+inline ::std::string* PortComponentAttributes::mutable_mapping_label() {
+  
+  // @@protoc_insertion_point(field_mutable:dmi.PortComponentAttributes.mapping_label)
+  return mapping_label_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* PortComponentAttributes::release_mapping_label() {
+  // @@protoc_insertion_point(field_release:dmi.PortComponentAttributes.mapping_label)
+  
+  return mapping_label_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void PortComponentAttributes::set_allocated_mapping_label(::std::string* mapping_label) {
+  if (mapping_label != nullptr) {
+    
+  } else {
+    
+  }
+  mapping_label_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), mapping_label);
+  // @@protoc_insertion_point(field_set_allocated:dmi.PortComponentAttributes.mapping_label)
+}
+
+// .dmi.PonIdConfig pon_id_config = 6;
+inline bool PortComponentAttributes::has_pon_id_config() const {
+  return this != internal_default_instance() && pon_id_config_ != nullptr;
+}
+inline void PortComponentAttributes::clear_pon_id_config() {
+  if (GetArenaNoVirtual() == nullptr && pon_id_config_ != nullptr) {
+    delete pon_id_config_;
+  }
+  pon_id_config_ = nullptr;
+}
+inline const ::dmi::PonIdConfig& PortComponentAttributes::pon_id_config() const {
+  const ::dmi::PonIdConfig* p = pon_id_config_;
+  // @@protoc_insertion_point(field_get:dmi.PortComponentAttributes.pon_id_config)
+  return p != nullptr ? *p : *reinterpret_cast<const ::dmi::PonIdConfig*>(
+      &::dmi::_PonIdConfig_default_instance_);
+}
+inline ::dmi::PonIdConfig* PortComponentAttributes::release_pon_id_config() {
+  // @@protoc_insertion_point(field_release:dmi.PortComponentAttributes.pon_id_config)
+  
+  ::dmi::PonIdConfig* temp = pon_id_config_;
+  pon_id_config_ = nullptr;
+  return temp;
+}
+inline ::dmi::PonIdConfig* PortComponentAttributes::mutable_pon_id_config() {
+  
+  if (pon_id_config_ == nullptr) {
+    auto* p = CreateMaybeMessage<::dmi::PonIdConfig>(GetArenaNoVirtual());
+    pon_id_config_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:dmi.PortComponentAttributes.pon_id_config)
+  return pon_id_config_;
+}
+inline void PortComponentAttributes::set_allocated_pon_id_config(::dmi::PonIdConfig* pon_id_config) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == nullptr) {
+    delete pon_id_config_;
+  }
+  if (pon_id_config) {
+    ::google::protobuf::Arena* submessage_arena = nullptr;
+    if (message_arena != submessage_arena) {
+      pon_id_config = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, pon_id_config, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  pon_id_config_ = pon_id_config;
+  // @@protoc_insertion_point(field_set_allocated:dmi.PortComponentAttributes.pon_id_config)
+}
+
+// -------------------------------------------------------------------
+
+// PortComponentChangeAttributes
+
+// .dmi.PonIdConfig pon_id_config = 1;
+inline bool PortComponentChangeAttributes::has_pon_id_config() const {
+  return this != internal_default_instance() && pon_id_config_ != nullptr;
+}
+inline void PortComponentChangeAttributes::clear_pon_id_config() {
+  if (GetArenaNoVirtual() == nullptr && pon_id_config_ != nullptr) {
+    delete pon_id_config_;
+  }
+  pon_id_config_ = nullptr;
+}
+inline const ::dmi::PonIdConfig& PortComponentChangeAttributes::pon_id_config() const {
+  const ::dmi::PonIdConfig* p = pon_id_config_;
+  // @@protoc_insertion_point(field_get:dmi.PortComponentChangeAttributes.pon_id_config)
+  return p != nullptr ? *p : *reinterpret_cast<const ::dmi::PonIdConfig*>(
+      &::dmi::_PonIdConfig_default_instance_);
+}
+inline ::dmi::PonIdConfig* PortComponentChangeAttributes::release_pon_id_config() {
+  // @@protoc_insertion_point(field_release:dmi.PortComponentChangeAttributes.pon_id_config)
+  
+  ::dmi::PonIdConfig* temp = pon_id_config_;
+  pon_id_config_ = nullptr;
+  return temp;
+}
+inline ::dmi::PonIdConfig* PortComponentChangeAttributes::mutable_pon_id_config() {
+  
+  if (pon_id_config_ == nullptr) {
+    auto* p = CreateMaybeMessage<::dmi::PonIdConfig>(GetArenaNoVirtual());
+    pon_id_config_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:dmi.PortComponentChangeAttributes.pon_id_config)
+  return pon_id_config_;
+}
+inline void PortComponentChangeAttributes::set_allocated_pon_id_config(::dmi::PonIdConfig* pon_id_config) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == nullptr) {
+    delete pon_id_config_;
+  }
+  if (pon_id_config) {
+    ::google::protobuf::Arena* submessage_arena = nullptr;
+    if (message_arena != submessage_arena) {
+      pon_id_config = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, pon_id_config, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  pon_id_config_ = pon_id_config;
+  // @@protoc_insertion_point(field_set_allocated:dmi.PortComponentChangeAttributes.pon_id_config)
+}
+
+// -------------------------------------------------------------------
+
+// PonIdConfig
+
+// bytes pon_id = 1;
+inline void PonIdConfig::clear_pon_id() {
+  pon_id_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& PonIdConfig::pon_id() const {
+  // @@protoc_insertion_point(field_get:dmi.PonIdConfig.pon_id)
+  return pon_id_.GetNoArena();
+}
+inline void PonIdConfig::set_pon_id(const ::std::string& value) {
+  
+  pon_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:dmi.PonIdConfig.pon_id)
+}
+#if LANG_CXX11
+inline void PonIdConfig::set_pon_id(::std::string&& value) {
+  
+  pon_id_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:dmi.PonIdConfig.pon_id)
+}
+#endif
+inline void PonIdConfig::set_pon_id(const char* value) {
+  GOOGLE_DCHECK(value != nullptr);
+  
+  pon_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:dmi.PonIdConfig.pon_id)
+}
+inline void PonIdConfig::set_pon_id(const void* value, size_t size) {
+  
+  pon_id_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:dmi.PonIdConfig.pon_id)
+}
+inline ::std::string* PonIdConfig::mutable_pon_id() {
+  
+  // @@protoc_insertion_point(field_mutable:dmi.PonIdConfig.pon_id)
+  return pon_id_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* PonIdConfig::release_pon_id() {
+  // @@protoc_insertion_point(field_release:dmi.PonIdConfig.pon_id)
+  
+  return pon_id_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void PonIdConfig::set_allocated_pon_id(::std::string* pon_id) {
+  if (pon_id != nullptr) {
+    
+  } else {
+    
+  }
+  pon_id_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), pon_id);
+  // @@protoc_insertion_point(field_set_allocated:dmi.PonIdConfig.pon_id)
+}
+
+// uint32 pon_id_transmit_periodicity = 2;
+inline void PonIdConfig::clear_pon_id_transmit_periodicity() {
+  pon_id_transmit_periodicity_ = 0u;
+}
+inline ::google::protobuf::uint32 PonIdConfig::pon_id_transmit_periodicity() const {
+  // @@protoc_insertion_point(field_get:dmi.PonIdConfig.pon_id_transmit_periodicity)
+  return pon_id_transmit_periodicity_;
+}
+inline void PonIdConfig::set_pon_id_transmit_periodicity(::google::protobuf::uint32 value) {
+  
+  pon_id_transmit_periodicity_ = value;
+  // @@protoc_insertion_point(field_set:dmi.PonIdConfig.pon_id_transmit_periodicity)
+}
+
 // -------------------------------------------------------------------
 
 // ContainerComponentAttributes
@@ -5097,6 +5628,56 @@
   // @@protoc_insertion_point(field_set:dmi.ModifiableComponent.admin_state)
 }
 
+// .dmi.PortComponentChangeAttributes port_attr = 50;
+inline bool ModifiableComponent::has_port_attr() const {
+  return specific_case() == kPortAttr;
+}
+inline void ModifiableComponent::set_has_port_attr() {
+  _oneof_case_[0] = kPortAttr;
+}
+inline void ModifiableComponent::clear_port_attr() {
+  if (has_port_attr()) {
+    delete specific_.port_attr_;
+    clear_has_specific();
+  }
+}
+inline ::dmi::PortComponentChangeAttributes* ModifiableComponent::release_port_attr() {
+  // @@protoc_insertion_point(field_release:dmi.ModifiableComponent.port_attr)
+  if (has_port_attr()) {
+    clear_has_specific();
+      ::dmi::PortComponentChangeAttributes* temp = specific_.port_attr_;
+    specific_.port_attr_ = nullptr;
+    return temp;
+  } else {
+    return nullptr;
+  }
+}
+inline const ::dmi::PortComponentChangeAttributes& ModifiableComponent::port_attr() const {
+  // @@protoc_insertion_point(field_get:dmi.ModifiableComponent.port_attr)
+  return has_port_attr()
+      ? *specific_.port_attr_
+      : *reinterpret_cast< ::dmi::PortComponentChangeAttributes*>(&::dmi::_PortComponentChangeAttributes_default_instance_);
+}
+inline ::dmi::PortComponentChangeAttributes* ModifiableComponent::mutable_port_attr() {
+  if (!has_port_attr()) {
+    clear_specific();
+    set_has_port_attr();
+    specific_.port_attr_ = CreateMaybeMessage< ::dmi::PortComponentChangeAttributes >(
+        GetArenaNoVirtual());
+  }
+  // @@protoc_insertion_point(field_mutable:dmi.ModifiableComponent.port_attr)
+  return specific_.port_attr_;
+}
+
+inline bool ModifiableComponent::has_specific() const {
+  return specific_case() != SPECIFIC_NOT_SET;
+}
+inline void ModifiableComponent::clear_has_specific() {
+  _oneof_case_[0] = SPECIFIC_NOT_SET;
+}
+inline ModifiableComponent::SpecificCase ModifiableComponent::specific_case() const {
+  return ModifiableComponent::SpecificCase(_oneof_case_[0]);
+}
 #ifdef __GNUC__
   #pragma GCC diagnostic pop
 #endif  // __GNUC__
@@ -5122,6 +5703,10 @@
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 
diff --git a/cpp/dmi/hw_management_service.pb.cc b/cpp/dmi/hw_management_service.pb.cc
index be75597..eda5b7b 100644
--- a/cpp/dmi/hw_management_service.pb.cc
+++ b/cpp/dmi/hw_management_service.pb.cc
@@ -18,7 +18,7 @@
 
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uuid_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_Hardware_dmi_2fhw_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_ModifiableComponent_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<3> scc_info_ModifiableComponent_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<9> scc_info_Component_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fmanagement_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_EntitiesLogLevel_dmi_2fhw_5fmanagement_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fmanagement_5fservice_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_ManagedDeviceInfo_dmi_2fhw_5fmanagement_5fservice_2eproto;
diff --git a/dmi.pb b/dmi.pb
index 96a47eb..1ee531b 100644
--- a/dmi.pb
+++ b/dmi.pb
Binary files differ
diff --git a/go/dmi/hw.pb.go b/go/dmi/hw.pb.go
index 195169b..1c442d5 100644
--- a/go/dmi/hw.pb.go
+++ b/go/dmi/hw.pb.go
@@ -596,7 +596,7 @@
 }
 
 func (PsuComponentAttributes_SupportedVoltage) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{7, 0}
+	return fileDescriptor_d7c33d745c4ab367, []int{9, 0}
 }
 
 type TransceiverComponentsAttributes_FormFactor int32
@@ -660,7 +660,7 @@
 }
 
 func (TransceiverComponentsAttributes_FormFactor) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{8, 0}
+	return fileDescriptor_d7c33d745c4ab367, []int{10, 0}
 }
 
 type TransceiverComponentsAttributes_Type int32
@@ -703,7 +703,7 @@
 }
 
 func (TransceiverComponentsAttributes_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{8, 1}
+	return fileDescriptor_d7c33d745c4ab367, []int{10, 1}
 }
 
 type Uuid struct {
@@ -1007,13 +1007,18 @@
 }
 
 type PortComponentAttributes struct {
-	ConnectorType        PortComponentAttributes_ConnectorType `protobuf:"varint,1,opt,name=connector_type,json=connectorType,proto3,enum=dmi.PortComponentAttributes_ConnectorType" json:"connector_type,omitempty"`
-	Speed                PortComponentAttributes_Speed         `protobuf:"varint,2,opt,name=speed,proto3,enum=dmi.PortComponentAttributes_Speed" json:"speed,omitempty"`
-	Protocol             PortComponentAttributes_Protocol      `protobuf:"varint,3,opt,name=protocol,proto3,enum=dmi.PortComponentAttributes_Protocol" json:"protocol,omitempty"`
-	PhysicalLabel        string                                `protobuf:"bytes,4,opt,name=physical_label,json=physicalLabel,proto3" json:"physical_label,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
-	XXX_unrecognized     []byte                                `json:"-"`
-	XXX_sizecache        int32                                 `json:"-"`
+	ConnectorType PortComponentAttributes_ConnectorType `protobuf:"varint,1,opt,name=connector_type,json=connectorType,proto3,enum=dmi.PortComponentAttributes_ConnectorType" json:"connector_type,omitempty"`
+	Speed         PortComponentAttributes_Speed         `protobuf:"varint,2,opt,name=speed,proto3,enum=dmi.PortComponentAttributes_Speed" json:"speed,omitempty"`
+	Protocol      PortComponentAttributes_Protocol      `protobuf:"varint,3,opt,name=protocol,proto3,enum=dmi.PortComponentAttributes_Protocol" json:"protocol,omitempty"`
+	PhysicalLabel string                                `protobuf:"bytes,4,opt,name=physical_label,json=physicalLabel,proto3" json:"physical_label,omitempty"`
+	// The mapping_label can be used to map ports between the DMI interface and other systems like VOLTHA
+	// The value of the mapping_label should be exactly the same as generated for the same port by the other
+	// system
+	MappingLabel         string       `protobuf:"bytes,5,opt,name=mapping_label,json=mappingLabel,proto3" json:"mapping_label,omitempty"`
+	PonIdConfig          *PonIdConfig `protobuf:"bytes,6,opt,name=pon_id_config,json=ponIdConfig,proto3" json:"pon_id_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
 }
 
 func (m *PortComponentAttributes) Reset()         { *m = PortComponentAttributes{} }
@@ -1069,6 +1074,109 @@
 	return ""
 }
 
+func (m *PortComponentAttributes) GetMappingLabel() string {
+	if m != nil {
+		return m.MappingLabel
+	}
+	return ""
+}
+
+func (m *PortComponentAttributes) GetPonIdConfig() *PonIdConfig {
+	if m != nil {
+		return m.PonIdConfig
+	}
+	return nil
+}
+
+type PortComponentChangeAttributes struct {
+	PonIdConfig          *PonIdConfig `protobuf:"bytes,1,opt,name=pon_id_config,json=ponIdConfig,proto3" json:"pon_id_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *PortComponentChangeAttributes) Reset()         { *m = PortComponentChangeAttributes{} }
+func (m *PortComponentChangeAttributes) String() string { return proto.CompactTextString(m) }
+func (*PortComponentChangeAttributes) ProtoMessage()    {}
+func (*PortComponentChangeAttributes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{6}
+}
+
+func (m *PortComponentChangeAttributes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PortComponentChangeAttributes.Unmarshal(m, b)
+}
+func (m *PortComponentChangeAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PortComponentChangeAttributes.Marshal(b, m, deterministic)
+}
+func (m *PortComponentChangeAttributes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PortComponentChangeAttributes.Merge(m, src)
+}
+func (m *PortComponentChangeAttributes) XXX_Size() int {
+	return xxx_messageInfo_PortComponentChangeAttributes.Size(m)
+}
+func (m *PortComponentChangeAttributes) XXX_DiscardUnknown() {
+	xxx_messageInfo_PortComponentChangeAttributes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PortComponentChangeAttributes proto.InternalMessageInfo
+
+func (m *PortComponentChangeAttributes) GetPonIdConfig() *PonIdConfig {
+	if m != nil {
+		return m.PonIdConfig
+	}
+	return nil
+}
+
+type PonIdConfig struct {
+	// The pon_id and pon_id_transmit_periodicity attributes are valid only for ports of type GPON, XGPON and XGSPON
+	// For GPON pon_id is a 7 byte value
+	// For XGS-PON, it's a 32 bit value, should be encoded in the first 4 bytes of pon_id in network byte order
+	PonId                    []byte   `protobuf:"bytes,1,opt,name=pon_id,json=ponId,proto3" json:"pon_id,omitempty"`
+	PonIdTransmitPeriodicity uint32   `protobuf:"varint,2,opt,name=pon_id_transmit_periodicity,json=ponIdTransmitPeriodicity,proto3" json:"pon_id_transmit_periodicity,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{} `json:"-"`
+	XXX_unrecognized         []byte   `json:"-"`
+	XXX_sizecache            int32    `json:"-"`
+}
+
+func (m *PonIdConfig) Reset()         { *m = PonIdConfig{} }
+func (m *PonIdConfig) String() string { return proto.CompactTextString(m) }
+func (*PonIdConfig) ProtoMessage()    {}
+func (*PonIdConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{7}
+}
+
+func (m *PonIdConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PonIdConfig.Unmarshal(m, b)
+}
+func (m *PonIdConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PonIdConfig.Marshal(b, m, deterministic)
+}
+func (m *PonIdConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PonIdConfig.Merge(m, src)
+}
+func (m *PonIdConfig) XXX_Size() int {
+	return xxx_messageInfo_PonIdConfig.Size(m)
+}
+func (m *PonIdConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_PonIdConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PonIdConfig proto.InternalMessageInfo
+
+func (m *PonIdConfig) GetPonId() []byte {
+	if m != nil {
+		return m.PonId
+	}
+	return nil
+}
+
+func (m *PonIdConfig) GetPonIdTransmitPeriodicity() uint32 {
+	if m != nil {
+		return m.PonIdTransmitPeriodicity
+	}
+	return 0
+}
+
 type ContainerComponentAttributes struct {
 	PhysicalLabel        string   `protobuf:"bytes,1,opt,name=physical_label,json=physicalLabel,proto3" json:"physical_label,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1080,7 +1188,7 @@
 func (m *ContainerComponentAttributes) String() string { return proto.CompactTextString(m) }
 func (*ContainerComponentAttributes) ProtoMessage()    {}
 func (*ContainerComponentAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{6}
+	return fileDescriptor_d7c33d745c4ab367, []int{8}
 }
 
 func (m *ContainerComponentAttributes) XXX_Unmarshal(b []byte) error {
@@ -1119,7 +1227,7 @@
 func (m *PsuComponentAttributes) String() string { return proto.CompactTextString(m) }
 func (*PsuComponentAttributes) ProtoMessage()    {}
 func (*PsuComponentAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{7}
+	return fileDescriptor_d7c33d745c4ab367, []int{9}
 }
 
 func (m *PsuComponentAttributes) XXX_Unmarshal(b []byte) error {
@@ -1166,7 +1274,7 @@
 func (m *TransceiverComponentsAttributes) String() string { return proto.CompactTextString(m) }
 func (*TransceiverComponentsAttributes) ProtoMessage()    {}
 func (*TransceiverComponentsAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{8}
+	return fileDescriptor_d7c33d745c4ab367, []int{10}
 }
 
 func (m *TransceiverComponentsAttributes) XXX_Unmarshal(b []byte) error {
@@ -1279,7 +1387,7 @@
 func (m *Component) String() string { return proto.CompactTextString(m) }
 func (*Component) ProtoMessage()    {}
 func (*Component) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{9}
+	return fileDescriptor_d7c33d745c4ab367, []int{11}
 }
 
 func (m *Component) XXX_Unmarshal(b []byte) error {
@@ -1530,7 +1638,7 @@
 func (m *Hardware) String() string { return proto.CompactTextString(m) }
 func (*Hardware) ProtoMessage()    {}
 func (*Hardware) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{10}
+	return fileDescriptor_d7c33d745c4ab367, []int{12}
 }
 
 func (m *Hardware) XXX_Unmarshal(b []byte) error {
@@ -1576,24 +1684,29 @@
 type ModifiableComponent struct {
 	// The name has to be unique for each component within the hardware and implementations need to
 	// ascertain this when modifying the name
-	Name                 string              `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Class                ComponentType       `protobuf:"varint,2,opt,name=class,proto3,enum=dmi.ComponentType" json:"class,omitempty"`
-	Parent               *Component          `protobuf:"bytes,3,opt,name=parent,proto3" json:"parent,omitempty"`
-	ParentRelPos         int32               `protobuf:"varint,4,opt,name=parent_rel_pos,json=parentRelPos,proto3" json:"parent_rel_pos,omitempty"`
-	Alias                string              `protobuf:"bytes,5,opt,name=alias,proto3" json:"alias,omitempty"`
-	AssetId              string              `protobuf:"bytes,6,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"`
-	Uri                  *Uri                `protobuf:"bytes,7,opt,name=uri,proto3" json:"uri,omitempty"`
-	AdminState           ComponentAdminState `protobuf:"varint,8,opt,name=admin_state,json=adminState,proto3,enum=dmi.ComponentAdminState" json:"admin_state,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
+	Name         string              `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Class        ComponentType       `protobuf:"varint,2,opt,name=class,proto3,enum=dmi.ComponentType" json:"class,omitempty"`
+	Parent       *Component          `protobuf:"bytes,3,opt,name=parent,proto3" json:"parent,omitempty"`
+	ParentRelPos int32               `protobuf:"varint,4,opt,name=parent_rel_pos,json=parentRelPos,proto3" json:"parent_rel_pos,omitempty"`
+	Alias        string              `protobuf:"bytes,5,opt,name=alias,proto3" json:"alias,omitempty"`
+	AssetId      string              `protobuf:"bytes,6,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"`
+	Uri          *Uri                `protobuf:"bytes,7,opt,name=uri,proto3" json:"uri,omitempty"`
+	AdminState   ComponentAdminState `protobuf:"varint,8,opt,name=admin_state,json=adminState,proto3,enum=dmi.ComponentAdminState" json:"admin_state,omitempty"`
+	// The attribute 'specific' can be populated for specific class of components
+	//
+	// Types that are valid to be assigned to Specific:
+	//	*ModifiableComponent_PortAttr
+	Specific             isModifiableComponent_Specific `protobuf_oneof:"specific"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
 }
 
 func (m *ModifiableComponent) Reset()         { *m = ModifiableComponent{} }
 func (m *ModifiableComponent) String() string { return proto.CompactTextString(m) }
 func (*ModifiableComponent) ProtoMessage()    {}
 func (*ModifiableComponent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{11}
+	return fileDescriptor_d7c33d745c4ab367, []int{13}
 }
 
 func (m *ModifiableComponent) XXX_Unmarshal(b []byte) error {
@@ -1670,6 +1783,37 @@
 	return ComponentAdminState_COMP_ADMIN_STATE_UNDEFINED
 }
 
+type isModifiableComponent_Specific interface {
+	isModifiableComponent_Specific()
+}
+
+type ModifiableComponent_PortAttr struct {
+	PortAttr *PortComponentChangeAttributes `protobuf:"bytes,50,opt,name=port_attr,json=portAttr,proto3,oneof"`
+}
+
+func (*ModifiableComponent_PortAttr) isModifiableComponent_Specific() {}
+
+func (m *ModifiableComponent) GetSpecific() isModifiableComponent_Specific {
+	if m != nil {
+		return m.Specific
+	}
+	return nil
+}
+
+func (m *ModifiableComponent) GetPortAttr() *PortComponentChangeAttributes {
+	if x, ok := m.GetSpecific().(*ModifiableComponent_PortAttr); ok {
+		return x.PortAttr
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*ModifiableComponent) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*ModifiableComponent_PortAttr)(nil),
+	}
+}
+
 func init() {
 	proto.RegisterEnum("dmi.ComponentType", ComponentType_name, ComponentType_value)
 	proto.RegisterEnum("dmi.ComponentAdminState", ComponentAdminState_name, ComponentAdminState_value)
@@ -1692,6 +1836,8 @@
 	proto.RegisterType((*ComponentState)(nil), "dmi.ComponentState")
 	proto.RegisterType((*ComponentSensorData)(nil), "dmi.ComponentSensorData")
 	proto.RegisterType((*PortComponentAttributes)(nil), "dmi.PortComponentAttributes")
+	proto.RegisterType((*PortComponentChangeAttributes)(nil), "dmi.PortComponentChangeAttributes")
+	proto.RegisterType((*PonIdConfig)(nil), "dmi.PonIdConfig")
 	proto.RegisterType((*ContainerComponentAttributes)(nil), "dmi.ContainerComponentAttributes")
 	proto.RegisterType((*PsuComponentAttributes)(nil), "dmi.PsuComponentAttributes")
 	proto.RegisterType((*TransceiverComponentsAttributes)(nil), "dmi.TransceiverComponentsAttributes")
@@ -1703,169 +1849,176 @@
 func init() { proto.RegisterFile("dmi/hw.proto", fileDescriptor_d7c33d745c4ab367) }
 
 var fileDescriptor_d7c33d745c4ab367 = []byte{
-	// 2612 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcd, 0x8e, 0xdb, 0xc8,
-	0x11, 0xb6, 0xfe, 0xa5, 0xd2, 0xcf, 0xb4, 0x7b, 0xfc, 0xa3, 0x1d, 0xdb, 0xbb, 0xb3, 0xca, 0xee,
-	0x62, 0x76, 0x92, 0x9d, 0x19, 0xcb, 0x76, 0xe0, 0xcd, 0x22, 0x08, 0x38, 0x14, 0x35, 0xe2, 0x5a,
-	0x22, 0xb9, 0x4d, 0x6a, 0xec, 0xd9, 0x0b, 0xc1, 0x91, 0xa8, 0x19, 0x02, 0x92, 0x28, 0x90, 0xd4,
-	0xac, 0x0d, 0xe4, 0x14, 0xe4, 0x92, 0x53, 0x5e, 0x22, 0x08, 0x36, 0x97, 0x00, 0x41, 0x72, 0xcc,
-	0x21, 0x97, 0xbc, 0x40, 0x6e, 0x79, 0x86, 0xbc, 0x44, 0xd0, 0xdd, 0xa4, 0x44, 0x51, 0xf4, 0x4f,
-	0x80, 0xdc, 0xba, 0xbf, 0xaf, 0xaa, 0xba, 0xba, 0xba, 0xab, 0xba, 0x48, 0xa8, 0x8d, 0x67, 0xce,
-	0xf1, 0xf5, 0x0f, 0x47, 0x0b, 0xcf, 0x0d, 0x5c, 0x9c, 0x1b, 0xcf, 0x9c, 0xbd, 0x4f, 0xae, 0x5c,
-	0xf7, 0x6a, 0x6a, 0x1f, 0x33, 0xe8, 0x72, 0x39, 0x39, 0x0e, 0x9c, 0x99, 0xed, 0x07, 0xd6, 0x6c,
-	0xc1, 0xa5, 0x5a, 0x7b, 0x90, 0x1f, 0x2e, 0x9d, 0x31, 0xc6, 0x90, 0x5f, 0x2e, 0x9d, 0x71, 0x33,
-	0xb3, 0x9f, 0x39, 0xa8, 0x10, 0x36, 0x6e, 0xfd, 0x14, 0xa0, 0x67, 0x79, 0xe3, 0x1f, 0x2c, 0xcf,
-	0x96, 0x3b, 0xf8, 0x51, 0x4c, 0xa2, 0xda, 0xae, 0x1c, 0x8d, 0x67, 0xce, 0x11, 0x55, 0x0d, 0x85,
-	0xef, 0x43, 0x6e, 0xe8, 0x39, 0x18, 0x41, 0x6e, 0xe9, 0x39, 0xa1, 0x19, 0x3a, 0x6c, 0xfd, 0x36,
-	0x07, 0x0d, 0xd1, 0x9d, 0x2d, 0xdc, 0xb9, 0x3d, 0x0f, 0xf4, 0xc0, 0x0a, 0x6c, 0xdc, 0x03, 0xec,
-	0xd3, 0x81, 0x39, 0xb5, 0xfc, 0xc0, 0x1c, 0x5d, 0x5b, 0xf3, 0x2b, 0x3b, 0x32, 0xbc, 0x77, 0xc4,
-	0x5d, 0x3e, 0x8a, 0x5c, 0x3e, 0x32, 0x22, 0x97, 0x09, 0x62, 0x5a, 0x7d, 0xcb, 0x0f, 0x44, 0xae,
-	0x83, 0xbf, 0x86, 0xaa, 0x35, 0x9e, 0x39, 0x73, 0x93, 0x31, 0xcd, 0xec, 0x7e, 0xe6, 0xa0, 0xd1,
-	0x6e, 0x32, 0xdf, 0x56, 0x6b, 0x0a, 0x54, 0x80, 0x2d, 0x4c, 0xc0, 0x5a, 0x8d, 0xf1, 0xcf, 0x01,
-	0xdc, 0x85, 0xed, 0x85, 0x9a, 0x39, 0xa6, 0x79, 0x7f, 0x53, 0x53, 0x5d, 0xd8, 0x1e, 0x57, 0xac,
-	0xb8, 0xd1, 0x90, 0x2e, 0xb9, 0xf4, 0xad, 0x2b, 0x3b, 0x54, 0xcc, 0xa7, 0x2d, 0x39, 0xa4, 0x02,
-	0xe1, 0x92, 0xcb, 0xd5, 0x98, 0x79, 0x3b, 0xb5, 0xbc, 0x59, 0xa8, 0x5a, 0x48, 0xf5, 0x96, 0x0a,
-	0x44, 0xde, 0xae, 0xc6, 0xf8, 0x57, 0x50, 0xf7, 0x03, 0x6b, 0x3e, 0xbe, 0x7c, 0x13, 0x2a, 0x17,
-	0x99, 0xf2, 0xde, 0xa6, 0xb2, 0xce, 0x45, 0xb8, 0x7a, 0xcd, 0x8f, 0xcd, 0x5a, 0xff, 0xc9, 0xc2,
-	0xee, 0x5a, 0xce, 0x9e, 0xfb, 0xae, 0xd7, 0xb1, 0x02, 0x0b, 0xdf, 0x81, 0xc2, 0x8d, 0x35, 0x5d,
-	0xda, 0x2c, 0xfc, 0x05, 0xc2, 0x27, 0xf8, 0x0b, 0xc8, 0x07, 0x6f, 0x16, 0x51, 0x40, 0x31, 0x5b,
-	0x85, 0x8a, 0x9f, 0x53, 0xd6, 0x78, 0xb3, 0xb0, 0x09, 0xe3, 0xf1, 0xe7, 0x50, 0xf0, 0x47, 0xd6,
-	0x34, 0x8a, 0xdf, 0x0e, 0x13, 0x64, 0x42, 0x3a, 0x85, 0x09, 0x67, 0xf1, 0x43, 0xa8, 0x2c, 0x3c,
-	0x7b, 0xe4, 0xf8, 0x8e, 0x3b, 0x67, 0x11, 0x2b, 0x90, 0x35, 0x80, 0xbf, 0x84, 0x22, 0xdd, 0xd3,
-	0xd2, 0x0f, 0x23, 0x72, 0x9b, 0x59, 0xe1, 0x3e, 0xea, 0x8c, 0x20, 0xa1, 0x00, 0xfe, 0x09, 0xd4,
-	0x97, 0x73, 0x27, 0xf0, 0xcd, 0xb1, 0xe3, 0x2f, 0xa6, 0xd6, 0x1b, 0x16, 0x86, 0x0a, 0xa9, 0x31,
-	0xb0, 0xc3, 0x31, 0xfc, 0x1c, 0x2a, 0xab, 0x6b, 0xde, 0x2c, 0xbd, 0xf7, 0x56, 0xad, 0x85, 0xf1,
-	0x21, 0xdc, 0x66, 0xfb, 0x37, 0x97, 0x8b, 0x31, 0xbd, 0x9f, 0x1e, 0x8d, 0x74, 0x79, 0x3f, 0x73,
-	0x50, 0x27, 0x3b, 0x8c, 0x18, 0x32, 0x9c, 0xd0, 0x13, 0x79, 0x00, 0x95, 0xb1, 0x15, 0x58, 0x26,
-	0x8b, 0x53, 0x85, 0xb9, 0x51, 0xa6, 0x00, 0x8d, 0x4e, 0xeb, 0x2f, 0x05, 0xb8, 0xaf, 0xb9, 0x5e,
-	0xb0, 0x3e, 0xd6, 0x20, 0xf0, 0x9c, 0xcb, 0x65, 0x60, 0xfb, 0xf8, 0x3b, 0x68, 0x8c, 0xdc, 0xf9,
-	0xdc, 0x1e, 0x05, 0xae, 0xc7, 0xb5, 0x33, 0x6c, 0xdb, 0x87, 0x6c, 0xdb, 0x6f, 0xd1, 0x3a, 0x12,
-	0x23, 0x15, 0x16, 0xfd, 0xfa, 0x28, 0x3e, 0xc5, 0xcf, 0xa1, 0xe0, 0x2f, 0x6c, 0x7b, 0x1c, 0x9e,
-	0x57, 0xeb, 0x9d, 0x96, 0x74, 0x2a, 0x49, 0xb8, 0x02, 0x16, 0xa0, 0xcc, 0x42, 0x32, 0x72, 0xa7,
-	0xe1, 0x19, 0x7e, 0xfe, 0x4e, 0x65, 0x2d, 0x14, 0x26, 0x2b, 0x35, 0xfc, 0x39, 0x34, 0x16, 0xd7,
-	0x6f, 0x7c, 0x67, 0x64, 0x4d, 0xcd, 0xa9, 0x75, 0x69, 0x4f, 0xd9, 0x09, 0x57, 0x48, 0x3d, 0x42,
-	0xfb, 0x14, 0x6c, 0x2d, 0xa0, 0xbe, 0xb1, 0x07, 0xfc, 0x10, 0x9a, 0xa2, 0xaa, 0x28, 0x92, 0x68,
-	0xa8, 0xc4, 0x34, 0x2e, 0x34, 0xc9, 0x1c, 0x2a, 0x1d, 0xa9, 0x2b, 0x2b, 0x52, 0x07, 0xdd, 0xc2,
-	0x65, 0xc8, 0x93, 0x6f, 0x9f, 0x3e, 0x43, 0x19, 0x5c, 0x83, 0x72, 0x57, 0x3e, 0x95, 0x88, 0xd9,
-	0x17, 0x51, 0x16, 0xef, 0x40, 0x95, 0xcf, 0x74, 0xd1, 0xd4, 0x44, 0x94, 0xc3, 0x75, 0xa8, 0x70,
-	0x60, 0xa0, 0xa9, 0x28, 0x8f, 0x2b, 0x50, 0x20, 0x7a, 0xfb, 0x49, 0x1b, 0x15, 0x5a, 0x7f, 0xce,
-	0x40, 0x81, 0x6d, 0x16, 0xef, 0xc2, 0x8e, 0xae, 0x49, 0x52, 0x67, 0x63, 0x85, 0x2a, 0x94, 0x3a,
-	0x17, 0x8a, 0x30, 0x90, 0x45, 0x94, 0xa1, 0x56, 0xce, 0xe4, 0x33, 0xe1, 0x54, 0x36, 0xcc, 0xc7,
-	0x28, 0x8b, 0x1b, 0x00, 0xab, 0xe9, 0x09, 0xca, 0xc5, 0xe7, 0xed, 0x67, 0x28, 0x1f, 0x9f, 0x3f,
-	0x3d, 0x41, 0x05, 0xea, 0xd5, 0x5a, 0xfe, 0x04, 0x15, 0xe3, 0xc0, 0xd3, 0x93, 0x13, 0x54, 0xc2,
-	0x08, 0x6a, 0x03, 0x29, 0xb2, 0x70, 0x72, 0x82, 0xca, 0x71, 0xe4, 0x71, 0xfb, 0xd9, 0x09, 0xaa,
-	0xb4, 0x7e, 0x0d, 0xe5, 0x28, 0xbe, 0xf8, 0x1e, 0x60, 0x8d, 0xa8, 0x86, 0x2a, 0xaa, 0xfd, 0x0d,
-	0xaf, 0x6b, 0x50, 0x96, 0x8c, 0x9e, 0x44, 0x14, 0xc9, 0x40, 0x19, 0x1a, 0xa5, 0x33, 0x4d, 0x55,
-	0x50, 0x96, 0xee, 0xfb, 0x15, 0x1b, 0xe6, 0x30, 0x40, 0xf1, 0xd5, 0x99, 0x4e, 0xc7, 0x2c, 0x1c,
-	0x67, 0x5d, 0x41, 0x37, 0x50, 0x81, 0xc2, 0xba, 0x44, 0x64, 0xa1, 0x8f, 0x8a, 0x54, 0x4f, 0xa2,
-	0x02, 0x25, 0x3a, 0x3a, 0x95, 0x0d, 0x1d, 0x95, 0x5b, 0x12, 0x3c, 0x14, 0xdd, 0x79, 0x60, 0x39,
-	0x73, 0xdb, 0x4b, 0xbb, 0xb7, 0xdb, 0xe7, 0x9c, 0x49, 0x3b, 0xe7, 0x7f, 0x66, 0xe0, 0x9e, 0xe6,
-	0x2f, 0xd3, 0x2c, 0x5c, 0xc0, 0x6d, 0x7f, 0xb9, 0x58, 0xb8, 0x5e, 0x60, 0x8f, 0xcd, 0x1b, 0x77,
-	0x1a, 0x58, 0x57, 0xd1, 0xe5, 0xff, 0x19, 0xbf, 0x75, 0xa9, 0x7a, 0x47, 0x7a, 0xa4, 0x74, 0xce,
-	0x75, 0x08, 0xf2, 0x13, 0x48, 0x4b, 0x03, 0x94, 0x94, 0xc2, 0x9f, 0xc0, 0x03, 0x7d, 0xa8, 0x69,
-	0x2a, 0x31, 0xa4, 0x8e, 0x79, 0xae, 0xf6, 0x0d, 0xe1, 0x6c, 0xf3, 0x8e, 0x95, 0x20, 0x77, 0xfe,
-	0xf4, 0x39, 0x0f, 0xe3, 0x79, 0xfb, 0xc9, 0x09, 0xca, 0xb2, 0xd1, 0xe3, 0xc7, 0xcf, 0x50, 0xae,
-	0xf5, 0xaf, 0x02, 0x7c, 0x62, 0x78, 0xd6, 0xdc, 0x1f, 0xd9, 0xce, 0x4d, 0x2c, 0x22, 0x7e, 0x6c,
-	0x43, 0x1a, 0x54, 0x27, 0xae, 0x37, 0x33, 0x27, 0x16, 0xbd, 0xd5, 0xe1, 0x56, 0x8e, 0xd9, 0x56,
-	0xde, 0xa3, 0x7a, 0xd4, 0x75, 0xbd, 0x59, 0x97, 0xa9, 0x11, 0x98, 0xac, 0xc6, 0xb8, 0x07, 0x10,
-	0x50, 0x4d, 0x33, 0x56, 0x7e, 0xbf, 0xfc, 0x20, 0x83, 0xac, 0x2e, 0x54, 0x98, 0x32, 0x4b, 0xaf,
-	0x4f, 0xa1, 0x36, 0xb3, 0x5e, 0xd3, 0x42, 0x19, 0x58, 0xf3, 0x11, 0xaf, 0xd0, 0x75, 0x52, 0x9d,
-	0x59, 0xaf, 0x3b, 0x21, 0x84, 0x7f, 0x09, 0x38, 0x2e, 0x62, 0xf2, 0x52, 0x9e, 0x4f, 0x2f, 0xe5,
-	0x28, 0xa6, 0xc9, 0x10, 0x5a, 0x8c, 0xbd, 0xd7, 0xe6, 0x0f, 0xd6, 0x8d, 0x3d, 0xb5, 0xe7, 0x57,
-	0xc1, 0x75, 0xb3, 0xb0, 0x9f, 0x3b, 0xa8, 0x93, 0x9a, 0xf7, 0xfa, 0xe5, 0x0a, 0xa3, 0x42, 0xc1,
-	0x86, 0x50, 0x91, 0x0b, 0x05, 0x71, 0xa1, 0x5f, 0x00, 0x5a, 0x4b, 0x84, 0x6e, 0x94, 0xd2, 0xdd,
-	0xd8, 0x59, 0x0b, 0x32, 0xa0, 0xf5, 0x8f, 0x0c, 0xc0, 0x3a, 0x98, 0xf8, 0x3e, 0xec, 0x76, 0x55,
-	0x32, 0x30, 0xbb, 0x02, 0xab, 0x2b, 0x43, 0xe5, 0x85, 0xa2, 0xbe, 0x54, 0x78, 0x41, 0xf9, 0x4e,
-	0xef, 0x6a, 0x3c, 0xd7, 0xe9, 0xc8, 0xd4, 0xfa, 0x43, 0x1d, 0x65, 0x69, 0x5e, 0xd0, 0x69, 0xfb,
-	0x39, 0xca, 0xd1, 0x1b, 0x41, 0x65, 0xf2, 0x34, 0xcd, 0x56, 0x22, 0x05, 0x0a, 0xbf, 0xea, 0x6a,
-	0x3c, 0x6f, 0xc4, 0xae, 0xf6, 0x94, 0xe7, 0x8d, 0xd8, 0xd5, 0xda, 0xa8, 0xcc, 0x46, 0x9a, 0xf0,
-	0x02, 0x55, 0x70, 0x11, 0xb2, 0xaf, 0xda, 0x08, 0x68, 0xd2, 0xa9, 0x34, 0x47, 0x51, 0x95, 0x6a,
-	0x8a, 0x5d, 0x0d, 0xd5, 0xa8, 0x41, 0x2a, 0x6f, 0x0a, 0xa2, 0x8a, 0xea, 0xab, 0x59, 0x47, 0x54,
-	0x51, 0xa3, 0x75, 0x0d, 0x79, 0x76, 0x64, 0x08, 0x6a, 0x61, 0x1d, 0x8c, 0x9c, 0xfe, 0x1f, 0xb3,
-	0x9d, 0xb9, 0xa2, 0x2a, 0xa8, 0x40, 0x8b, 0x9b, 0x72, 0x66, 0x6a, 0xaa, 0xd2, 0x8e, 0x67, 0x7b,
-	0xeb, 0xdf, 0x25, 0xa8, 0xac, 0x6e, 0x0f, 0x6d, 0xfa, 0xe6, 0xd6, 0xcc, 0x8e, 0x9a, 0x3e, 0x3a,
-	0xc6, 0x07, 0x50, 0x18, 0x4d, 0x2d, 0xdf, 0xdf, 0x78, 0xfa, 0x57, 0x2a, 0xec, 0x92, 0x71, 0x01,
-	0xbc, 0x0f, 0xd5, 0xb1, 0xed, 0x8f, 0x3c, 0x67, 0x11, 0xd0, 0x67, 0x3d, 0xc7, 0x8c, 0xc4, 0x21,
-	0x7c, 0x0f, 0x8a, 0x0b, 0xcb, 0xb3, 0xe7, 0x41, 0xf8, 0x22, 0x84, 0x33, 0xfc, 0x19, 0x34, 0xf8,
-	0xc8, 0xf4, 0xec, 0xa9, 0xb9, 0x70, 0xf9, 0xc3, 0x5f, 0x20, 0x35, 0x8e, 0x12, 0x7b, 0xaa, 0xb9,
-	0x3e, 0x3e, 0x84, 0xf2, 0xe8, 0xda, 0x99, 0x8e, 0x3d, 0x7b, 0xce, 0x2e, 0x4d, 0xb5, 0xdd, 0xd8,
-	0x74, 0x86, 0xac, 0x78, 0x7a, 0xd9, 0xaf, 0xc3, 0x56, 0xd5, 0xf4, 0xec, 0x1b, 0x76, 0x79, 0x2a,
-	0xa4, 0x1a, 0x61, 0xc4, 0xbe, 0xa1, 0x22, 0x13, 0xc7, 0x9b, 0xad, 0x44, 0xca, 0x5c, 0x24, 0xc2,
-	0x42, 0x11, 0xdf, 0x9d, 0x04, 0x2b, 0x11, 0xfe, 0xaa, 0x57, 0x23, 0x8c, 0x8a, 0x3c, 0x02, 0xf0,
-	0x6d, 0xcf, 0xb1, 0xa6, 0xe6, 0x7c, 0x39, 0x6b, 0x02, 0x13, 0xa8, 0x70, 0x44, 0x59, 0xce, 0xf0,
-	0x47, 0x50, 0x9e, 0x4d, 0xae, 0x4c, 0x16, 0xd5, 0x2a, 0x23, 0x4b, 0xb3, 0xc9, 0x95, 0x42, 0x03,
-	0xfb, 0x08, 0x60, 0xe6, 0x8e, 0xed, 0x29, 0x27, 0x6b, 0x5c, 0x93, 0x21, 0x8c, 0xbe, 0x03, 0x05,
-	0x6b, 0xea, 0x58, 0x7e, 0xb3, 0xce, 0x18, 0x3e, 0xa1, 0xf6, 0x2c, 0xdf, 0xb7, 0x03, 0xd3, 0x19,
-	0x37, 0x1b, 0xdc, 0x1e, 0x9b, 0xcb, 0x63, 0x7c, 0x17, 0x8a, 0x8e, 0x6f, 0x4e, 0xbc, 0x65, 0x73,
-	0x67, 0x3f, 0x73, 0x50, 0x26, 0x05, 0xc7, 0xef, 0x7a, 0x4b, 0xfc, 0x8c, 0x7b, 0x40, 0xdb, 0x94,
-	0x26, 0x7a, 0x6f, 0xef, 0x43, 0xbd, 0xeb, 0xd0, 0x6e, 0x66, 0x8f, 0xf7, 0xed, 0xb7, 0x99, 0x46,
-	0x99, 0x37, 0xf7, 0x9e, 0xc3, 0x3a, 0xf8, 0x55, 0xe7, 0x8f, 0x53, 0x3b, 0x7f, 0xfc, 0x25, 0x14,
-	0x78, 0x4b, 0xba, 0xcb, 0xf8, 0xdd, 0xad, 0x96, 0x34, 0xa0, 0x7d, 0x60, 0xd4, 0x00, 0xfb, 0xac,
-	0xad, 0xa3, 0xfe, 0x59, 0xcd, 0x3b, 0xec, 0x54, 0x13, 0x0d, 0xf0, 0xba, 0x37, 0x25, 0xe0, 0xaf,
-	0xfb, 0xd4, 0x6f, 0xa0, 0x42, 0xab, 0xbb, 0x69, 0x05, 0x81, 0xd7, 0x6c, 0xb3, 0x95, 0x1e, 0xbe,
-	0xab, 0x53, 0xe9, 0xdd, 0x22, 0x65, 0xaa, 0x40, 0x11, 0xfc, 0x2d, 0x6b, 0xb9, 0xf8, 0xd3, 0xc6,
-	0x2d, 0x3c, 0x61, 0x16, 0x3e, 0x0d, 0x97, 0x7e, 0xfb, 0xab, 0xd7, 0xbb, 0xc5, 0x7a, 0x2d, 0xce,
-	0x33, 0x5b, 0xcf, 0xa1, 0xbc, 0xf0, 0x97, 0xdc, 0xca, 0x53, 0x66, 0xe5, 0xc1, 0x3b, 0xde, 0xae,
-	0xde, 0x2d, 0x52, 0x5a, 0xf8, 0x4b, 0xa6, 0xf9, 0x1d, 0xa0, 0x60, 0x5d, 0xc4, 0xb9, 0x85, 0x67,
-	0xcc, 0xc2, 0x67, 0x1f, 0x52, 0xe1, 0x7b, 0xb7, 0xc8, 0x4e, 0x4c, 0x9f, 0x12, 0xa7, 0x00, 0x65,
-	0x7f, 0x61, 0x8f, 0x9c, 0x89, 0x33, 0x6a, 0xfd, 0x98, 0x81, 0x72, 0xf4, 0xbd, 0x86, 0xbf, 0x81,
-	0x6a, 0xec, 0xe3, 0xea, 0x03, 0xbe, 0xad, 0x60, 0xba, 0xfa, 0xac, 0xc2, 0x2d, 0xc8, 0x7b, 0xae,
-	0x1b, 0xb0, 0x12, 0xb0, 0x9d, 0x75, 0x8c, 0x5b, 0x2d, 0x70, 0xe9, 0xba, 0x81, 0x3d, 0x66, 0xd9,
-	0xff, 0x01, 0x0b, 0x9c, 0x32, 0xe9, 0xd6, 0x9f, 0xb2, 0xb0, 0x3b, 0x70, 0xc7, 0xce, 0xc4, 0xb1,
-	0x2e, 0xa7, 0xf6, 0xff, 0xab, 0x20, 0x7d, 0xb1, 0x2a, 0x37, 0xb9, 0x54, 0xc7, 0xdf, 0x5e, 0x7e,
-	0xf2, 0x29, 0xe5, 0x67, 0x95, 0x90, 0x85, 0xb7, 0x25, 0x64, 0x71, 0x33, 0x21, 0xc3, 0x14, 0x2a,
-	0xa5, 0xa5, 0x50, 0xe2, 0x3b, 0xb5, 0xfc, 0xe1, 0xdf, 0xa9, 0x87, 0x7f, 0xcb, 0xd1, 0xc6, 0x39,
-	0xb6, 0x5d, 0xde, 0x38, 0x0f, 0x34, 0x55, 0x91, 0x14, 0x63, 0xbb, 0x71, 0xde, 0x83, 0x7b, 0x5b,
-	0x2c, 0x7f, 0x4e, 0x32, 0x29, 0x9c, 0xd8, 0x13, 0x74, 0x5d, 0xa6, 0xcf, 0xe0, 0xb6, 0xd5, 0x53,
-	0x41, 0x7c, 0xa1, 0xf5, 0x05, 0x45, 0x42, 0xb9, 0x14, 0x56, 0x54, 0x15, 0x43, 0x90, 0x15, 0x89,
-	0xa0, 0x3c, 0xed, 0xb4, 0x12, 0xac, 0xa6, 0xbe, 0xa4, 0x3d, 0xfa, 0x50, 0xd3, 0xfa, 0x17, 0xa8,
-	0x40, 0xbb, 0xd9, 0x84, 0x40, 0x57, 0x50, 0x50, 0x11, 0x7f, 0x04, 0x77, 0x13, 0xb8, 0x2e, 0x29,
-	0xba, 0x4a, 0x50, 0x29, 0x85, 0x1a, 0xa8, 0x9d, 0x61, 0x5f, 0x42, 0x65, 0xfa, 0xc6, 0x6f, 0x2d,
-	0x47, 0x0c, 0x54, 0x49, 0x59, 0x46, 0xd4, 0x86, 0x08, 0x52, 0xf6, 0x7d, 0x2a, 0x18, 0x86, 0x44,
-	0x2e, 0x50, 0x35, 0x85, 0xd3, 0x0d, 0x95, 0x08, 0x67, 0x12, 0xaa, 0xa5, 0xf9, 0x20, 0x0d, 0x54,
-	0x72, 0x81, 0xea, 0xf8, 0x63, 0xd8, 0x4b, 0x50, 0x06, 0x11, 0x14, 0x5d, 0x94, 0xe4, 0x73, 0x89,
-	0xa0, 0xc6, 0xe1, 0x5f, 0x33, 0xb1, 0xef, 0xed, 0xf5, 0xd1, 0x46, 0x7a, 0xa6, 0xd0, 0x19, 0xc8,
-	0x8a, 0xa9, 0x1b, 0x82, 0xb1, 0x79, 0x7c, 0x61, 0xa0, 0x13, 0x7c, 0x74, 0x80, 0x0f, 0xe0, 0xfe,
-	0x16, 0xdb, 0x57, 0xc5, 0x17, 0x52, 0x07, 0x65, 0x71, 0x0b, 0x3e, 0xde, 0x22, 0xf5, 0xde, 0xd0,
-	0x30, 0x64, 0xe5, 0xcc, 0xec, 0x50, 0x03, 0x39, 0xfc, 0x08, 0x3e, 0x4a, 0x31, 0x1f, 0x9a, 0xc8,
-	0x1f, 0xfe, 0x98, 0x01, 0xbc, 0xfd, 0xfb, 0x63, 0xa5, 0xa5, 0x6a, 0xf4, 0x50, 0xb7, 0x7c, 0x8e,
-	0xbc, 0xda, 0xa0, 0x23, 0x97, 0xa3, 0x0d, 0xc5, 0xc8, 0x8e, 0xac, 0x0b, 0xa7, 0x7d, 0xe6, 0x73,
-	0x8a, 0xaa, 0xa4, 0x70, 0x32, 0x97, 0x46, 0x1a, 0x92, 0x4e, 0xb7, 0x83, 0xf2, 0x87, 0x7f, 0x8c,
-	0x07, 0x78, 0xfd, 0xc3, 0x65, 0x15, 0xe0, 0xa1, 0x4e, 0xdb, 0xfd, 0xb7, 0x07, 0x78, 0x93, 0x8f,
-	0xbc, 0x0d, 0x4f, 0x7c, 0x83, 0x95, 0x3b, 0x7d, 0x29, 0xe6, 0x6a, 0x9c, 0x12, 0x44, 0x43, 0x3e,
-	0xa7, 0xf9, 0x91, 0xa6, 0x77, 0x3a, 0xd4, 0x2f, 0x50, 0xfe, 0xf0, 0xf7, 0xf1, 0x3f, 0x2f, 0xeb,
-	0xdf, 0x3b, 0xeb, 0x9b, 0xd0, 0x17, 0xc8, 0xe0, 0x5d, 0x37, 0x61, 0x83, 0x8f, 0x1c, 0xfd, 0x14,
-	0x1e, 0xa5, 0x6a, 0x13, 0x93, 0x48, 0x9a, 0x20, 0x13, 0x94, 0x5d, 0x9f, 0x75, 0x4c, 0x44, 0x24,
-	0xb2, 0x21, 0x8b, 0x42, 0x1f, 0xe5, 0xa2, 0x8b, 0xbf, 0x41, 0x0f, 0x84, 0x6f, 0x55, 0x9a, 0xd0,
-	0xa9, 0x9c, 0xac, 0xa8, 0x04, 0x15, 0x52, 0xfd, 0x7a, 0x29, 0x10, 0x85, 0x1e, 0x4b, 0x71, 0x7d,
-	0x09, 0x63, 0xac, 0xac, 0x74, 0x24, 0x43, 0x22, 0x03, 0x59, 0x11, 0x0c, 0x09, 0x95, 0x0e, 0xff,
-	0x9e, 0x81, 0xbb, 0xa9, 0xff, 0xac, 0xf0, 0x3e, 0x3c, 0x64, 0xda, 0xba, 0x21, 0x28, 0x9d, 0xd3,
-	0x8b, 0x94, 0xa8, 0x44, 0x51, 0x4b, 0x4a, 0x24, 0x4a, 0x5c, 0x82, 0xef, 0xa9, 0x46, 0xec, 0x04,
-	0x37, 0x39, 0x51, 0xed, 0xd3, 0xcb, 0x76, 0x00, 0x9f, 0xa5, 0x90, 0x1a, 0x51, 0xcf, 0xe5, 0x0e,
-	0x4d, 0x20, 0x5d, 0x22, 0xe7, 0xb2, 0x28, 0xa1, 0xfc, 0xe1, 0xef, 0x72, 0x50, 0xdf, 0xf8, 0x19,
-	0x86, 0x9b, 0x70, 0xe7, 0x5c, 0xe8, 0x0f, 0xa5, 0xed, 0x6a, 0x7c, 0x07, 0x50, 0x8c, 0xe1, 0x5f,
-	0x05, 0x19, 0x5a, 0xa7, 0x36, 0xe4, 0xb9, 0xf3, 0x59, 0x5a, 0xd8, 0x62, 0x38, 0xfd, 0x64, 0xd5,
-	0x4d, 0x41, 0x44, 0xb9, 0x54, 0xa2, 0x23, 0xa2, 0x7c, 0xc2, 0x92, 0x30, 0xd0, 0x24, 0x22, 0xd1,
-	0x2f, 0x96, 0xcd, 0x75, 0x5f, 0x0a, 0x86, 0xa1, 0xa3, 0x62, 0x02, 0xed, 0x49, 0xc4, 0xf8, 0x1e,
-	0x95, 0x12, 0x36, 0x44, 0xa9, 0xaf, 0xcb, 0x43, 0x1d, 0x95, 0xe9, 0x9d, 0x8e, 0xe1, 0x9a, 0x44,
-	0x44, 0x5a, 0xeb, 0x48, 0x0f, 0x55, 0x30, 0x86, 0x46, 0x8c, 0x22, 0xda, 0x00, 0x41, 0x02, 0x13,
-	0x07, 0x03, 0x5e, 0x5c, 0x63, 0x98, 0x41, 0x86, 0x46, 0xcf, 0x64, 0x00, 0xaa, 0x25, 0x96, 0x0d,
-	0xcd, 0xa3, 0x3a, 0xbe, 0x0b, 0xb7, 0x63, 0xf8, 0x80, 0xde, 0x1c, 0x1d, 0x35, 0x12, 0xbe, 0x9f,
-	0x5e, 0x18, 0x92, 0x8e, 0x76, 0x0e, 0xff, 0x90, 0x03, 0x58, 0x7f, 0x1d, 0xae, 0x5d, 0xd6, 0x45,
-	0xa1, 0xbf, 0x79, 0x12, 0x2b, 0xb3, 0x9c, 0xba, 0x50, 0x45, 0x43, 0x45, 0x99, 0x24, 0xfc, 0xbd,
-	0xa4, 0x19, 0x2a, 0xca, 0xae, 0x57, 0xe3, 0xb0, 0x60, 0x18, 0x2a, 0xca, 0x25, 0x85, 0xbb, 0xd2,
-	0xc0, 0x50, 0x51, 0x3e, 0x29, 0xac, 0xc9, 0xa2, 0x1a, 0x3f, 0x02, 0x8e, 0x2a, 0x82, 0xa2, 0xa2,
-	0x62, 0xd2, 0xc4, 0x40, 0x16, 0x89, 0x8a, 0x4a, 0xdb, 0x70, 0xbf, 0x2f, 0xa3, 0x72, 0x12, 0x1e,
-	0x2a, 0xb2, 0xa1, 0xa3, 0x4a, 0xd2, 0xf4, 0x0b, 0xb9, 0xaf, 0x22, 0x48, 0xa2, 0x03, 0xe9, 0x4c,
-	0x40, 0xd5, 0x24, 0x7a, 0x26, 0x9f, 0x09, 0xa8, 0x96, 0x44, 0x0d, 0x89, 0x08, 0xa8, 0xbe, 0xb5,
-	0x11, 0xc9, 0x10, 0x50, 0x03, 0xef, 0xc2, 0x4e, 0x1c, 0x95, 0x5e, 0x09, 0x68, 0x67, 0x3b, 0x6e,
-	0x86, 0x21, 0x20, 0xb4, 0x1d, 0x65, 0x0a, 0xdf, 0x3e, 0xfc, 0x4d, 0x06, 0x6a, 0xf1, 0x1f, 0xba,
-	0x34, 0x15, 0xf9, 0x4b, 0xcf, 0xf2, 0x6c, 0xa8, 0x27, 0x93, 0x66, 0x93, 0x54, 0x5f, 0xa0, 0x0c,
-	0x2d, 0x67, 0x49, 0x15, 0xe1, 0x5c, 0x90, 0xfb, 0xf4, 0xb5, 0x40, 0x59, 0x5a, 0x3a, 0x36, 0x69,
-	0x45, 0x55, 0xe8, 0xc3, 0x21, 0x18, 0xb2, 0xaa, 0xd0, 0x82, 0x77, 0xfa, 0xcd, 0xf7, 0x5f, 0x5f,
-	0x39, 0xc1, 0xf5, 0xf2, 0xf2, 0x68, 0xe4, 0xce, 0x8e, 0xdd, 0x85, 0x3d, 0x1f, 0xb9, 0xde, 0xf8,
-	0x78, 0x6c, 0xdf, 0x38, 0x23, 0xfb, 0xab, 0x99, 0x35, 0xb7, 0xae, 0xec, 0x99, 0x3d, 0x0f, 0xbe,
-	0x72, 0xe6, 0x81, 0xed, 0x4d, 0xac, 0x91, 0x7d, 0x7c, 0xf3, 0xe4, 0xf8, 0xca, 0x3d, 0x1e, 0xcf,
-	0x9c, 0xcb, 0x22, 0x6b, 0x69, 0x9f, 0xfc, 0x37, 0x00, 0x00, 0xff, 0xff, 0x50, 0x7f, 0x9b, 0x1f,
-	0x65, 0x19, 0x00, 0x00,
+	// 2736 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4f, 0x6f, 0xe3, 0xc6,
+	0x15, 0x5f, 0xfd, 0x97, 0x9e, 0x24, 0x7b, 0x76, 0xf6, 0x9f, 0xe2, 0xdd, 0x4d, 0x1c, 0x35, 0x09,
+	0x1c, 0xb7, 0xb1, 0xbd, 0x5a, 0x6f, 0xb1, 0x69, 0x10, 0x14, 0x34, 0x45, 0x59, 0xcc, 0x4a, 0x24,
+	0x33, 0xa4, 0xbc, 0xeb, 0x5c, 0x08, 0x5a, 0xa2, 0x6d, 0x02, 0x92, 0x48, 0x90, 0x94, 0xb3, 0x0b,
+	0xf4, 0x54, 0xf4, 0x52, 0xa0, 0x40, 0xbf, 0x44, 0x51, 0xe4, 0xd4, 0x4b, 0x7b, 0xec, 0xa1, 0x97,
+	0x7e, 0x81, 0xde, 0xfa, 0x19, 0xfa, 0x05, 0x7a, 0x2c, 0x66, 0x86, 0x94, 0x28, 0x8a, 0xbb, 0xd9,
+	0x00, 0xbd, 0xcd, 0xbc, 0xdf, 0xef, 0xbd, 0x79, 0x7c, 0xf3, 0xe6, 0xcd, 0x1b, 0x42, 0x63, 0x32,
+	0x73, 0x0e, 0xaf, 0xbf, 0x3f, 0xf0, 0x7c, 0x37, 0x74, 0x71, 0x61, 0x32, 0x73, 0x76, 0x3e, 0xba,
+	0x72, 0xdd, 0xab, 0xa9, 0x7d, 0xc8, 0x44, 0x17, 0x8b, 0xcb, 0xc3, 0xd0, 0x99, 0xd9, 0x41, 0x68,
+	0xcd, 0x3c, 0xce, 0x6a, 0xef, 0x40, 0x71, 0xb4, 0x70, 0x26, 0x18, 0x43, 0x71, 0xb1, 0x70, 0x26,
+	0xad, 0xdc, 0x6e, 0x6e, 0xaf, 0x46, 0xd8, 0xb8, 0xfd, 0x73, 0x80, 0xbe, 0xe5, 0x4f, 0xbe, 0xb7,
+	0x7c, 0x5b, 0xee, 0xe2, 0xc7, 0x09, 0x46, 0xbd, 0x53, 0x3b, 0x98, 0xcc, 0x9c, 0x03, 0xaa, 0x1a,
+	0x91, 0x1f, 0x40, 0x61, 0xe4, 0x3b, 0x18, 0x41, 0x61, 0xe1, 0x3b, 0x91, 0x19, 0x3a, 0x6c, 0xff,
+	0xae, 0x00, 0x5b, 0xa2, 0x3b, 0xf3, 0xdc, 0xb9, 0x3d, 0x0f, 0xf5, 0xd0, 0x0a, 0x6d, 0xdc, 0x07,
+	0x1c, 0xd0, 0x81, 0x39, 0xb5, 0x82, 0xd0, 0x1c, 0x5f, 0x5b, 0xf3, 0x2b, 0x3b, 0x36, 0xbc, 0x73,
+	0xc0, 0x5d, 0x3e, 0x88, 0x5d, 0x3e, 0x30, 0x62, 0x97, 0x09, 0x62, 0x5a, 0x03, 0x2b, 0x08, 0x45,
+	0xae, 0x83, 0xbf, 0x84, 0xba, 0x35, 0x99, 0x39, 0x73, 0x93, 0x21, 0xad, 0xfc, 0x6e, 0x6e, 0x6f,
+	0xab, 0xd3, 0x62, 0xbe, 0x2d, 0xd7, 0x14, 0x28, 0x81, 0x2d, 0x4c, 0xc0, 0x5a, 0x8e, 0xf1, 0x2f,
+	0x01, 0x5c, 0xcf, 0xf6, 0x23, 0xcd, 0x02, 0xd3, 0x7c, 0xb0, 0xae, 0xa9, 0x7a, 0xb6, 0xcf, 0x15,
+	0x6b, 0x6e, 0x3c, 0xa4, 0x4b, 0x2e, 0x02, 0xeb, 0xca, 0x8e, 0x14, 0x8b, 0x59, 0x4b, 0x8e, 0x28,
+	0x21, 0x5a, 0x72, 0xb1, 0x1c, 0x33, 0x6f, 0xa7, 0x96, 0x3f, 0x8b, 0x54, 0x4b, 0x99, 0xde, 0x52,
+	0x42, 0xec, 0xed, 0x72, 0x8c, 0x7f, 0x0d, 0xcd, 0x20, 0xb4, 0xe6, 0x93, 0x8b, 0x37, 0x91, 0x72,
+	0x99, 0x29, 0xef, 0xac, 0x2b, 0xeb, 0x9c, 0xc2, 0xd5, 0x1b, 0x41, 0x62, 0xd6, 0xfe, 0x4f, 0x1e,
+	0xee, 0xac, 0x78, 0xf6, 0x3c, 0x70, 0xfd, 0xae, 0x15, 0x5a, 0xf8, 0x2e, 0x94, 0x6e, 0xac, 0xe9,
+	0xc2, 0x66, 0xe1, 0x2f, 0x11, 0x3e, 0xc1, 0x9f, 0x41, 0x31, 0x7c, 0xe3, 0xc5, 0x01, 0xc5, 0x6c,
+	0x15, 0x4a, 0x3f, 0xa3, 0xa8, 0xf1, 0xc6, 0xb3, 0x09, 0xc3, 0xf1, 0xa7, 0x50, 0x0a, 0xc6, 0xd6,
+	0x34, 0x8e, 0xdf, 0x36, 0x23, 0x32, 0x92, 0x4e, 0xc5, 0x84, 0xa3, 0xf8, 0x11, 0xd4, 0x3c, 0xdf,
+	0x1e, 0x3b, 0x81, 0xe3, 0xce, 0x59, 0xc4, 0x4a, 0x64, 0x25, 0xc0, 0x9f, 0x43, 0x99, 0x7e, 0xd3,
+	0x22, 0x88, 0x22, 0x72, 0x9b, 0x59, 0xe1, 0x3e, 0xea, 0x0c, 0x20, 0x11, 0x01, 0xff, 0x0c, 0x9a,
+	0x8b, 0xb9, 0x13, 0x06, 0xe6, 0xc4, 0x09, 0xbc, 0xa9, 0xf5, 0x86, 0x85, 0xa1, 0x46, 0x1a, 0x4c,
+	0xd8, 0xe5, 0x32, 0xfc, 0x1c, 0x6a, 0xcb, 0x34, 0x6f, 0x55, 0x7e, 0x34, 0xab, 0x56, 0x64, 0xbc,
+	0x0f, 0xb7, 0xd9, 0xf7, 0x9b, 0x0b, 0x6f, 0x42, 0xf3, 0xd3, 0xa7, 0x91, 0xae, 0xee, 0xe6, 0xf6,
+	0x9a, 0x64, 0x9b, 0x01, 0x23, 0x26, 0x27, 0x74, 0x47, 0x1e, 0x42, 0x6d, 0x62, 0x85, 0x96, 0xc9,
+	0xe2, 0x54, 0x63, 0x6e, 0x54, 0xa9, 0x80, 0x46, 0xa7, 0xfd, 0x87, 0x32, 0x3c, 0xd0, 0x5c, 0x3f,
+	0x5c, 0x6d, 0x6b, 0x18, 0xfa, 0xce, 0xc5, 0x22, 0xb4, 0x03, 0xfc, 0x2d, 0x6c, 0x8d, 0xdd, 0xf9,
+	0xdc, 0x1e, 0x87, 0xae, 0xcf, 0xb5, 0x73, 0xec, 0xb3, 0xf7, 0xd9, 0x67, 0xbf, 0x45, 0xeb, 0x40,
+	0x8c, 0x55, 0x58, 0xf4, 0x9b, 0xe3, 0xe4, 0x14, 0x3f, 0x87, 0x52, 0xe0, 0xd9, 0xf6, 0x24, 0xda,
+	0xaf, 0xf6, 0x3b, 0x2d, 0xe9, 0x94, 0x49, 0xb8, 0x02, 0x16, 0xa0, 0xca, 0x42, 0x32, 0x76, 0xa7,
+	0xd1, 0x1e, 0x7e, 0xfa, 0x4e, 0x65, 0x2d, 0x22, 0x93, 0xa5, 0x1a, 0xfe, 0x14, 0xb6, 0xbc, 0xeb,
+	0x37, 0x81, 0x33, 0xb6, 0xa6, 0xe6, 0xd4, 0xba, 0xb0, 0xa7, 0x6c, 0x87, 0x6b, 0xa4, 0x19, 0x4b,
+	0x07, 0x54, 0x48, 0xb7, 0x6e, 0x66, 0x79, 0x9e, 0x33, 0xbf, 0x8a, 0x58, 0x25, 0xbe, 0x75, 0x91,
+	0x90, 0x93, 0x8e, 0xa1, 0xe9, 0xb9, 0x73, 0xd3, 0x99, 0x98, 0x63, 0x77, 0x7e, 0xe9, 0x5c, 0xb1,
+	0xfd, 0xad, 0x77, 0x50, 0xe4, 0xd3, 0x5c, 0x9e, 0x88, 0x4c, 0x4e, 0xea, 0xde, 0x6a, 0xd2, 0xf6,
+	0xa0, 0xb9, 0x16, 0x1e, 0xfc, 0x08, 0x5a, 0xa2, 0xaa, 0x28, 0x92, 0x68, 0xa8, 0xc4, 0x34, 0xce,
+	0x35, 0xc9, 0x1c, 0x29, 0x5d, 0xa9, 0x27, 0x2b, 0x52, 0x17, 0xdd, 0xc2, 0x55, 0x28, 0x92, 0x6f,
+	0x8e, 0x9f, 0xa1, 0x1c, 0x6e, 0x40, 0xb5, 0x27, 0x9f, 0x48, 0xc4, 0x1c, 0x88, 0x28, 0x8f, 0xb7,
+	0xa1, 0xce, 0x67, 0xba, 0x68, 0x6a, 0x22, 0x2a, 0xe0, 0x26, 0xd4, 0xb8, 0x60, 0xa8, 0xa9, 0xa8,
+	0x88, 0x6b, 0x50, 0x22, 0x7a, 0xe7, 0x69, 0x07, 0x95, 0xda, 0x7f, 0xc9, 0x41, 0x89, 0xc5, 0x11,
+	0xdf, 0x81, 0x6d, 0x5d, 0x93, 0xa4, 0xee, 0xda, 0x0a, 0x75, 0xa8, 0x74, 0xcf, 0x15, 0x61, 0x28,
+	0x8b, 0x28, 0x47, 0xad, 0x9c, 0xca, 0xa7, 0xc2, 0x89, 0x6c, 0x98, 0x4f, 0x50, 0x1e, 0x6f, 0x01,
+	0x2c, 0xa7, 0x47, 0xa8, 0x90, 0x9c, 0x77, 0x9e, 0xa1, 0x62, 0x72, 0x7e, 0x7c, 0x84, 0x4a, 0xd4,
+	0xab, 0x15, 0xff, 0x08, 0x95, 0x93, 0x82, 0xe3, 0xa3, 0x23, 0x54, 0xc1, 0x08, 0x1a, 0x43, 0x29,
+	0xb6, 0x70, 0x74, 0x84, 0xaa, 0x49, 0xc9, 0x93, 0xce, 0xb3, 0x23, 0x54, 0x6b, 0xff, 0x06, 0xaa,
+	0xf1, 0xd6, 0xe1, 0xfb, 0x80, 0x35, 0xa2, 0x1a, 0xaa, 0xa8, 0x0e, 0xd6, 0xbc, 0x6e, 0x40, 0x55,
+	0x32, 0xfa, 0x12, 0x51, 0x24, 0x03, 0xe5, 0x68, 0x94, 0x4e, 0x35, 0x55, 0x41, 0x79, 0xfa, 0xdd,
+	0xaf, 0xd8, 0xb0, 0x80, 0x01, 0xca, 0xaf, 0x4e, 0x75, 0x3a, 0x66, 0xe1, 0x38, 0xed, 0x09, 0xba,
+	0x81, 0x4a, 0x54, 0xac, 0x4b, 0x44, 0x16, 0x06, 0xa8, 0x4c, 0xf5, 0x24, 0x4a, 0xa8, 0xd0, 0xd1,
+	0x89, 0x6c, 0xe8, 0xa8, 0xda, 0x1e, 0xc1, 0xe3, 0xb5, 0x84, 0xe2, 0xe5, 0x3b, 0x71, 0x26, 0x36,
+	0xf6, 0x3d, 0xf7, 0x3e, 0xfb, 0x3e, 0x86, 0x7a, 0x02, 0xc3, 0xf7, 0xa0, 0xcc, 0x8d, 0x30, 0xed,
+	0x06, 0x29, 0x31, 0x2e, 0xfe, 0x1a, 0x1e, 0x46, 0xb6, 0x43, 0xdf, 0x9a, 0x07, 0x33, 0x27, 0x34,
+	0x3d, 0xdb, 0x77, 0xdc, 0x89, 0x33, 0x76, 0xc2, 0x37, 0xec, 0xc8, 0x34, 0x49, 0x8b, 0x71, 0x8d,
+	0x88, 0xa0, 0xad, 0xf0, 0xb6, 0x04, 0x8f, 0x44, 0x77, 0x1e, 0x5a, 0xce, 0xdc, 0xf6, 0xb3, 0x8e,
+	0xf3, 0x66, 0xfa, 0xe7, 0x32, 0xd2, 0xbf, 0xfd, 0xcf, 0x1c, 0xdc, 0xd7, 0x82, 0x45, 0x96, 0x85,
+	0x73, 0xb8, 0x1d, 0x2c, 0x3c, 0xcf, 0xf5, 0x43, 0x7b, 0x62, 0xde, 0xb8, 0xd3, 0xd0, 0xba, 0x8a,
+	0x6b, 0xc2, 0x2f, 0x78, 0x00, 0x32, 0xf5, 0x0e, 0xf4, 0x58, 0xe9, 0x8c, 0xeb, 0x10, 0x14, 0xa4,
+	0x24, 0x6d, 0x0d, 0x50, 0x9a, 0x85, 0x3f, 0x82, 0x87, 0xfa, 0x48, 0xd3, 0x54, 0x62, 0x48, 0x5d,
+	0xf3, 0x4c, 0x1d, 0x18, 0xc2, 0xe9, 0xfa, 0xf9, 0xa8, 0x40, 0xe1, 0xec, 0xf8, 0x39, 0x4f, 0x81,
+	0xb3, 0xce, 0xd3, 0x23, 0x94, 0x67, 0xa3, 0x27, 0x4f, 0x9e, 0xa1, 0x42, 0xfb, 0x5f, 0x25, 0xf8,
+	0x88, 0x85, 0x69, 0x6c, 0x3b, 0x37, 0x89, 0x88, 0x04, 0x89, 0x0f, 0xd2, 0xa0, 0x7e, 0xe9, 0xfa,
+	0x33, 0xf3, 0xd2, 0xa2, 0x27, 0x32, 0xfa, 0x94, 0x43, 0xf6, 0x29, 0x3f, 0xa2, 0x7a, 0xd0, 0x73,
+	0xfd, 0x59, 0x8f, 0xa9, 0x11, 0xb8, 0x5c, 0x8e, 0x71, 0x1f, 0x80, 0x6d, 0x9e, 0x99, 0xb8, 0x95,
+	0x3e, 0x7f, 0x2f, 0x83, 0xac, 0x5c, 0xd6, 0x98, 0x32, 0x2b, 0x0d, 0x1f, 0x43, 0x63, 0x66, 0xbd,
+	0xa6, 0xf7, 0x47, 0x68, 0xcd, 0xc7, 0xfc, 0xe2, 0x6a, 0x92, 0xfa, 0xcc, 0x7a, 0xdd, 0x8d, 0x44,
+	0xf8, 0x6b, 0xc0, 0x49, 0x8a, 0xc9, 0x6f, 0xb8, 0x62, 0xf6, 0x0d, 0x87, 0x12, 0x9a, 0x4c, 0x42,
+	0x0b, 0x9d, 0xff, 0xda, 0xfc, 0xde, 0xba, 0xb1, 0xa7, 0xf6, 0xfc, 0x2a, 0xbc, 0x6e, 0x95, 0x76,
+	0x0b, 0x7b, 0x4d, 0xd2, 0xf0, 0x5f, 0xbf, 0x5c, 0xca, 0x28, 0x29, 0x5c, 0x23, 0x95, 0x39, 0x29,
+	0x4c, 0x92, 0x7e, 0x05, 0x68, 0xc5, 0x88, 0xdc, 0xa8, 0x64, 0xbb, 0xb1, 0xbd, 0x22, 0x32, 0x41,
+	0xfb, 0x1f, 0x39, 0x80, 0x55, 0x30, 0xf1, 0x03, 0xb8, 0xd3, 0x53, 0xc9, 0xd0, 0xec, 0x09, 0xac,
+	0x26, 0x8e, 0x94, 0x17, 0x8a, 0xfa, 0x52, 0xe1, 0xc5, 0xf0, 0x5b, 0xbd, 0xa7, 0xf1, 0x3a, 0x45,
+	0x47, 0xa6, 0x36, 0x18, 0xe9, 0x28, 0x4f, 0xcf, 0x34, 0x9d, 0x76, 0x9e, 0xa3, 0x02, 0xcd, 0x08,
+	0xca, 0x29, 0xd2, 0x12, 0xb1, 0xa4, 0x94, 0xa8, 0xf8, 0x55, 0x4f, 0xe3, 0x67, 0x5e, 0xec, 0x69,
+	0xc7, 0xfc, 0xcc, 0x8b, 0x3d, 0xad, 0x83, 0xaa, 0x6c, 0xa4, 0x09, 0x2f, 0x50, 0x0d, 0x97, 0x21,
+	0xff, 0xaa, 0x83, 0x80, 0x16, 0x0c, 0x95, 0xd6, 0x17, 0x54, 0xa7, 0x9a, 0x62, 0x4f, 0x43, 0x0d,
+	0x6a, 0x90, 0xf2, 0x4d, 0x41, 0x54, 0x51, 0x73, 0x39, 0xeb, 0x8a, 0x2a, 0xda, 0x6a, 0x5f, 0x43,
+	0x91, 0x6d, 0x19, 0x82, 0x46, 0x54, 0xc3, 0x63, 0xa7, 0x7f, 0x62, 0xa5, 0x62, 0xae, 0xa8, 0x0a,
+	0x2a, 0xd1, 0xc2, 0xac, 0x9c, 0x9a, 0x9a, 0xaa, 0x74, 0x92, 0x95, 0xaa, 0xfd, 0xef, 0x0a, 0xd4,
+	0x96, 0xd9, 0x43, 0x7b, 0xe1, 0xb9, 0x35, 0xb3, 0xe3, 0x5e, 0x98, 0x8e, 0xf1, 0x1e, 0x94, 0xc6,
+	0x53, 0x2b, 0x08, 0xd6, 0x3a, 0xa2, 0xa5, 0x0a, 0x4b, 0x32, 0x4e, 0xc0, 0xbb, 0x50, 0x9f, 0xd8,
+	0xc1, 0xd8, 0x77, 0xbc, 0x90, 0x76, 0x3b, 0x05, 0x66, 0x24, 0x29, 0xc2, 0xf7, 0xa1, 0xec, 0x59,
+	0xbe, 0x3d, 0x0f, 0xa3, 0x8b, 0x32, 0x9a, 0xe1, 0x4f, 0x60, 0x8b, 0x8f, 0x4c, 0xdf, 0x9e, 0x9a,
+	0x9e, 0xcb, 0xfb, 0xa1, 0x12, 0x69, 0x70, 0x29, 0xb1, 0xa7, 0x9a, 0x1b, 0xe0, 0x7d, 0xa8, 0x8e,
+	0xaf, 0x9d, 0xe9, 0xc4, 0xb7, 0xe7, 0x2c, 0x69, 0xea, 0x9d, 0xad, 0x75, 0x67, 0xc8, 0x12, 0xa7,
+	0xc9, 0x7e, 0x1d, 0x75, 0xf0, 0xa6, 0x6f, 0xdf, 0xb0, 0xe4, 0xa9, 0x91, 0x7a, 0x2c, 0x23, 0xf6,
+	0x0d, 0xa5, 0x5c, 0x3a, 0xfe, 0x6c, 0x49, 0xa9, 0x72, 0x4a, 0x2c, 0x8b, 0x28, 0x81, 0x7b, 0x19,
+	0x2e, 0x29, 0xbc, 0xd9, 0xa9, 0xc7, 0x32, 0x4a, 0x79, 0x0c, 0x10, 0xd8, 0xbe, 0x63, 0x4d, 0xcd,
+	0xf9, 0x62, 0xd6, 0x02, 0x46, 0xa8, 0x71, 0x89, 0xb2, 0x98, 0xe1, 0x0f, 0xa0, 0x3a, 0xbb, 0xbc,
+	0x32, 0x59, 0x54, 0xeb, 0x0c, 0xac, 0xcc, 0x2e, 0xaf, 0x14, 0x1a, 0xd8, 0xc7, 0x00, 0x33, 0x77,
+	0x62, 0x4f, 0x39, 0xd8, 0xe0, 0x9a, 0x4c, 0xc2, 0xe0, 0xbb, 0x50, 0xb2, 0xa6, 0x8e, 0x15, 0xb4,
+	0x9a, 0x0c, 0xe1, 0x13, 0x6a, 0xcf, 0x0a, 0x02, 0x3b, 0xa4, 0xb5, 0x7e, 0x8b, 0xdb, 0x63, 0x73,
+	0x79, 0x42, 0x2f, 0x01, 0x27, 0x30, 0x2f, 0xfd, 0x45, 0x6b, 0x7b, 0x37, 0xb7, 0x57, 0x25, 0x25,
+	0x27, 0xe8, 0xf9, 0x0b, 0xfc, 0x8c, 0x7b, 0x40, 0xbb, 0xb7, 0x16, 0xfa, 0xd1, 0x96, 0x90, 0x7a,
+	0xd7, 0xa5, 0x4d, 0xde, 0x0e, 0x7f, 0xce, 0xdc, 0x66, 0x1a, 0x55, 0xfe, 0xe6, 0xf1, 0x1d, 0xf6,
+	0xb0, 0x59, 0x3e, 0x88, 0x70, 0xe6, 0x83, 0x08, 0x7f, 0x0e, 0x25, 0xde, 0xa9, 0xdf, 0x61, 0xf8,
+	0x9d, 0x8d, 0x4e, 0x3d, 0xa4, 0xed, 0x71, 0xfc, 0x2e, 0x08, 0x58, 0xb7, 0x4b, 0xfd, 0xb3, 0x5a,
+	0x77, 0xd9, 0xae, 0xa6, 0xde, 0x05, 0xab, 0x96, 0x9d, 0x40, 0xb0, 0x6a, 0xdf, 0xbf, 0x82, 0x1a,
+	0xad, 0xee, 0xa6, 0x15, 0x86, 0x7e, 0xab, 0xc3, 0x56, 0x7a, 0xf4, 0xae, 0x06, 0xae, 0x7f, 0x8b,
+	0x54, 0xa9, 0x02, 0x95, 0xe0, 0x6f, 0x58, 0x27, 0xca, 0xaf, 0x36, 0x6e, 0xe1, 0x29, 0xb3, 0xf0,
+	0x71, 0xb4, 0xf4, 0xdb, 0x6f, 0xbd, 0xfe, 0x2d, 0xd6, 0x82, 0x72, 0x9c, 0xd9, 0x7a, 0x0e, 0x55,
+	0x2f, 0x58, 0x70, 0x2b, 0xc7, 0xcc, 0xca, 0xc3, 0x77, 0xdc, 0x5d, 0xfd, 0x5b, 0xa4, 0xe2, 0x05,
+	0x0b, 0xa6, 0xf9, 0x2d, 0xa0, 0x70, 0x55, 0xc4, 0xb9, 0x85, 0x67, 0xcc, 0xc2, 0x27, 0xef, 0x53,
+	0xe1, 0xfb, 0xb7, 0xc8, 0x76, 0x42, 0x9f, 0x02, 0x27, 0x00, 0xd5, 0xc0, 0xb3, 0xc7, 0xce, 0xa5,
+	0x33, 0x6e, 0xff, 0x90, 0x83, 0x6a, 0xfc, 0x8c, 0xc5, 0x5f, 0x41, 0x3d, 0xf1, 0xe6, 0x7c, 0x8f,
+	0x27, 0x27, 0x4c, 0x97, 0xaf, 0x4d, 0xdc, 0x86, 0xa2, 0xef, 0xba, 0x21, 0x2b, 0x01, 0x9b, 0xa7,
+	0x8e, 0x61, 0xcb, 0x05, 0x2e, 0x5c, 0x37, 0xb4, 0x27, 0xec, 0xf4, 0xbf, 0xc7, 0x02, 0x27, 0x8c,
+	0xdd, 0xfe, 0x6f, 0x1e, 0xee, 0x0c, 0xdd, 0x89, 0x73, 0xe9, 0x58, 0x17, 0x53, 0xfb, 0xff, 0x55,
+	0x90, 0x3e, 0x5b, 0x96, 0x9b, 0x42, 0xa6, 0xe3, 0x6f, 0x2f, 0x3f, 0xc5, 0x8c, 0xf2, 0xb3, 0x3c,
+	0x90, 0xa5, 0xb7, 0x1d, 0xc8, 0xf2, 0xfa, 0x81, 0x8c, 0x8e, 0x50, 0x25, 0xeb, 0x08, 0xa5, 0x9e,
+	0xef, 0xd5, 0x9f, 0xf0, 0x7c, 0x17, 0x36, 0x13, 0x3f, 0xe3, 0xd9, 0x93, 0x6e, 0x34, 0x93, 0xe9,
+	0x9f, 0xcc, 0x92, 0xfd, 0xbf, 0x15, 0xe8, 0x1b, 0x22, 0x11, 0x3d, 0xfe, 0x86, 0x18, 0x6a, 0xaa,
+	0x22, 0x29, 0xc6, 0xe6, 0x1b, 0x62, 0x07, 0xee, 0x6f, 0xa0, 0xfc, 0x76, 0xca, 0x65, 0x60, 0x62,
+	0x5f, 0xd0, 0x75, 0x99, 0xde, 0xaa, 0x9b, 0x56, 0x4f, 0x04, 0xf1, 0x85, 0x36, 0x10, 0x14, 0x09,
+	0x15, 0x32, 0x50, 0x51, 0x55, 0x0c, 0x41, 0x56, 0x24, 0x82, 0x8a, 0xb4, 0x71, 0x4b, 0xa1, 0x9a,
+	0xfa, 0x92, 0x3e, 0x57, 0x46, 0x9a, 0x36, 0x38, 0x47, 0x25, 0xda, 0xd8, 0xa7, 0x08, 0x3d, 0x41,
+	0x41, 0x65, 0xfc, 0x01, 0xdc, 0x4b, 0xc9, 0x75, 0x49, 0xd1, 0x55, 0x82, 0x2a, 0x19, 0xd0, 0x50,
+	0xed, 0x8e, 0x06, 0x12, 0xaa, 0xd2, 0x96, 0x61, 0x63, 0x39, 0x62, 0xa0, 0x5a, 0xc6, 0x32, 0xa2,
+	0x36, 0x42, 0x90, 0xf1, 0xdd, 0x27, 0x82, 0x61, 0x48, 0xe4, 0x1c, 0xd5, 0x33, 0x30, 0xdd, 0x50,
+	0x89, 0x70, 0x2a, 0xa1, 0x46, 0x96, 0x0f, 0xd2, 0x50, 0x25, 0xe7, 0xa8, 0x89, 0x3f, 0x84, 0x9d,
+	0x14, 0x64, 0x10, 0x41, 0xd1, 0x45, 0x49, 0x3e, 0x93, 0x08, 0xda, 0xda, 0xff, 0x6b, 0x2e, 0xf1,
+	0x57, 0x63, 0x95, 0x29, 0xb1, 0x9e, 0x29, 0x74, 0x87, 0xb2, 0x62, 0xea, 0x86, 0x60, 0xac, 0x6f,
+	0x5f, 0x14, 0xe8, 0x14, 0x1e, 0x6f, 0xe0, 0x43, 0x78, 0xb0, 0x81, 0x0e, 0x54, 0xf1, 0x85, 0xd4,
+	0x45, 0x79, 0xdc, 0x86, 0x0f, 0x37, 0x40, 0xbd, 0x3f, 0x32, 0x0c, 0x59, 0x39, 0x35, 0xbb, 0xd4,
+	0x40, 0x01, 0x3f, 0x86, 0x0f, 0x32, 0xcc, 0x47, 0x26, 0x8a, 0xfb, 0x3f, 0xe4, 0x00, 0x6f, 0xfe,
+	0x64, 0x5a, 0x6a, 0xa9, 0x1a, 0xdd, 0xd4, 0x0d, 0x9f, 0x63, 0xaf, 0xd6, 0xe0, 0xd8, 0xe5, 0xf8,
+	0x83, 0x12, 0x60, 0x57, 0xd6, 0x85, 0x93, 0x01, 0xf3, 0x39, 0x43, 0x55, 0x52, 0x38, 0x58, 0xc8,
+	0x02, 0x0d, 0x49, 0xa7, 0x9f, 0x83, 0x8a, 0xfb, 0x7f, 0x4e, 0x06, 0x78, 0xf5, 0x5b, 0x6b, 0x19,
+	0xe0, 0x91, 0x4e, 0x5f, 0x0f, 0x6f, 0x0f, 0xf0, 0x3a, 0x1e, 0x7b, 0x1b, 0xed, 0xf8, 0x1a, 0x2a,
+	0x77, 0x07, 0x52, 0xc2, 0xd5, 0x24, 0x24, 0x88, 0x86, 0x7c, 0x46, 0xcf, 0x47, 0x96, 0xde, 0xc9,
+	0x48, 0x3f, 0x47, 0xc5, 0xfd, 0x3f, 0x26, 0xff, 0x6f, 0xad, 0x7e, 0xa2, 0xad, 0x32, 0x61, 0x20,
+	0x90, 0xe1, 0xbb, 0x32, 0x61, 0x0d, 0x8f, 0x1d, 0xfd, 0x18, 0x1e, 0x67, 0x6a, 0x13, 0x93, 0x48,
+	0x9a, 0x20, 0x13, 0x94, 0x5f, 0xed, 0x75, 0x82, 0x22, 0x12, 0xd9, 0x90, 0x45, 0x61, 0x80, 0x0a,
+	0x71, 0xe2, 0xaf, 0xc1, 0x43, 0xe1, 0x1b, 0x95, 0x1e, 0xe8, 0x4c, 0x4c, 0x56, 0x54, 0x82, 0x4a,
+	0x99, 0x7e, 0xbd, 0x14, 0x88, 0x42, 0xb7, 0xa5, 0xbc, 0x4a, 0xc2, 0x04, 0x2a, 0x2b, 0x5d, 0xc9,
+	0x90, 0xc8, 0x50, 0x56, 0x04, 0x43, 0x42, 0x95, 0xfd, 0xbf, 0xe7, 0xe0, 0x5e, 0xe6, 0x9f, 0x41,
+	0xbc, 0x0b, 0x8f, 0x98, 0xb6, 0x6e, 0x08, 0x4a, 0xf7, 0xe4, 0x3c, 0x23, 0x2a, 0x71, 0xd4, 0xd2,
+	0x8c, 0x54, 0x89, 0x4b, 0xe1, 0x7d, 0xd5, 0x48, 0xec, 0xe0, 0x3a, 0x26, 0xaa, 0x03, 0x9a, 0x6c,
+	0x7b, 0xf0, 0x49, 0x06, 0xa8, 0x11, 0xf5, 0x4c, 0xee, 0xd2, 0x03, 0xa4, 0x4b, 0xe4, 0x4c, 0x16,
+	0x25, 0x54, 0xdc, 0xff, 0x7d, 0x01, 0x9a, 0x6b, 0xbf, 0x1c, 0x71, 0x0b, 0xee, 0x9e, 0x09, 0x83,
+	0x91, 0xb4, 0x59, 0x8d, 0xef, 0x02, 0x4a, 0x20, 0xfc, 0x91, 0x91, 0xa3, 0x75, 0x6a, 0x8d, 0xcf,
+	0x9d, 0xcf, 0xd3, 0xc2, 0x96, 0x90, 0xd3, 0x17, 0xb0, 0x6e, 0x0a, 0x22, 0x2a, 0x64, 0x02, 0x5d,
+	0x11, 0x15, 0x53, 0x96, 0x84, 0xa1, 0x26, 0x11, 0x89, 0x3e, 0x80, 0xd6, 0xd7, 0x7d, 0x29, 0x18,
+	0x86, 0x8e, 0xca, 0x29, 0x69, 0x5f, 0x22, 0xc6, 0x77, 0xa8, 0x92, 0xb2, 0x21, 0x4a, 0x03, 0x5d,
+	0x1e, 0xe9, 0xa8, 0x4a, 0x73, 0x3a, 0x21, 0xd7, 0x24, 0x22, 0xd2, 0x5a, 0x47, 0xfa, 0xa8, 0x86,
+	0x31, 0x6c, 0x25, 0x20, 0xa2, 0x0d, 0x11, 0xa4, 0x64, 0xe2, 0x70, 0xc8, 0x8b, 0x6b, 0x42, 0x66,
+	0x90, 0x91, 0xd1, 0x37, 0x99, 0x00, 0x35, 0x52, 0xcb, 0x46, 0xe6, 0x51, 0x13, 0xdf, 0x83, 0xdb,
+	0x09, 0xf9, 0x90, 0x66, 0x8e, 0x8e, 0xb6, 0x52, 0xbe, 0x9f, 0x9c, 0x1b, 0x92, 0x8e, 0xb6, 0xf7,
+	0xff, 0x54, 0x00, 0x58, 0x3d, 0x36, 0x57, 0x2e, 0xeb, 0xa2, 0x30, 0x58, 0xdf, 0x89, 0xa5, 0x59,
+	0x0e, 0x9d, 0xab, 0xa2, 0xa1, 0xa2, 0x5c, 0x5a, 0xfc, 0x9d, 0xa4, 0x19, 0x2a, 0xca, 0xaf, 0x56,
+	0xe3, 0x62, 0xc1, 0x30, 0x54, 0x54, 0x48, 0x93, 0x7b, 0xd2, 0xd0, 0x50, 0x51, 0x31, 0x4d, 0xd6,
+	0x64, 0x51, 0x4d, 0x6e, 0x01, 0x97, 0x2a, 0x82, 0xa2, 0xa2, 0x72, 0xda, 0xc4, 0x50, 0x16, 0x89,
+	0x8a, 0x2a, 0x9b, 0xe2, 0xc1, 0x40, 0x46, 0xd5, 0xb4, 0x78, 0xa4, 0xc8, 0x86, 0x8e, 0x6a, 0x69,
+	0xd3, 0x2f, 0xe4, 0x81, 0x8a, 0x20, 0x2d, 0x1d, 0x4a, 0xa7, 0x02, 0xaa, 0xa7, 0xa5, 0xa7, 0xf2,
+	0xa9, 0x80, 0x1a, 0x69, 0xa9, 0x21, 0x11, 0x01, 0x35, 0x37, 0x3e, 0x44, 0x32, 0x04, 0xb4, 0x85,
+	0xef, 0xc0, 0x76, 0x52, 0x2a, 0xbd, 0x12, 0xd0, 0xf6, 0x66, 0xdc, 0x0c, 0x43, 0x40, 0x68, 0x33,
+	0xca, 0x54, 0x7c, 0x7b, 0xff, 0xb7, 0x39, 0x68, 0x24, 0x7f, 0x9b, 0xd3, 0xa3, 0xc8, 0x6f, 0x7a,
+	0x76, 0xce, 0x46, 0x7a, 0xfa, 0xd0, 0xac, 0x83, 0xea, 0x0b, 0x94, 0xa3, 0xe5, 0x2c, 0xad, 0x22,
+	0x9c, 0x09, 0xf2, 0x80, 0xde, 0x16, 0x28, 0x4f, 0x4b, 0xc7, 0x3a, 0xac, 0xa8, 0x0a, 0xbd, 0x38,
+	0x04, 0x43, 0x56, 0x15, 0x5a, 0xf0, 0x4e, 0xbe, 0xfa, 0xee, 0xcb, 0x2b, 0x27, 0xbc, 0x5e, 0x5c,
+	0x1c, 0x8c, 0xdd, 0xd9, 0xa1, 0xeb, 0xd9, 0xf3, 0xb1, 0xeb, 0x4f, 0x0e, 0x27, 0xf6, 0x8d, 0x33,
+	0xb6, 0xbf, 0x98, 0x59, 0x73, 0xeb, 0xca, 0x9e, 0xd9, 0xf3, 0xf0, 0x0b, 0x67, 0x1e, 0xda, 0xfe,
+	0xa5, 0x35, 0xb6, 0x0f, 0x6f, 0x9e, 0x1e, 0x5e, 0xb9, 0x87, 0x93, 0x99, 0x73, 0x51, 0x66, 0x1d,
+	0xf2, 0xd3, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x21, 0x4b, 0xb6, 0xcb, 0x1a, 0x00, 0x00,
 }
diff --git a/protos/dmi/hw.proto b/protos/dmi/hw.proto
index edc5bb9..d31f441 100644
--- a/protos/dmi/hw.proto
+++ b/protos/dmi/hw.proto
@@ -186,6 +186,23 @@
     Speed speed = 2;

     Protocol protocol = 3;

     string physical_label = 4;

+    // The mapping_label can be used to map ports between the DMI interface and other systems like VOLTHA

+    // The value of the mapping_label should be exactly the same as generated for the same port by the other

+    // system

+    string mapping_label = 5;

+    PonIdConfig pon_id_config = 6;

+}

+

+message PortComponentChangeAttributes {

+    PonIdConfig pon_id_config = 1;

+}

+

+message PonIdConfig {

+    // The pon_id and pon_id_transmit_periodicity attributes are valid only for ports of type GPON, XGPON and XGSPON

+    // For GPON pon_id is a 7 byte value

+    // For XGS-PON, it's a 32 bit value, should be encoded in the first 4 bytes of pon_id in network byte order

+    bytes pon_id = 1;

+    uint32 pon_id_transmit_periodicity = 2; // The value is in seconds and defaults to 1 second

 }

 

 message ContainerComponentAttributes{

@@ -299,4 +316,8 @@
     string asset_id = 6;

     Uri uri = 7;

     ComponentAdminState admin_state = 8;

+    // The attribute 'specific' can be populated for specific class of components

+    oneof specific {

+        PortComponentChangeAttributes port_attr = 50;

+    }

 }

diff --git a/python/dmi/hw_pb2.py b/python/dmi/hw_pb2.py
index 72549c1..c8113ad 100644
--- a/python/dmi/hw_pb2.py
+++ b/python/dmi/hw_pb2.py
@@ -21,7 +21,7 @@
   syntax='proto3',
   serialized_options=b'Z9github.com/opencord/device-management-interface/v3/go/dmi',
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x0c\x64mi/hw.proto\x12\x03\x64mi\x1a\x1fgoogle/protobuf/timestamp.proto\"\x14\n\x04Uuid\x12\x0c\n\x04uuid\x18\x01 \x01(\t\"%\n\nHardwareID\x12\x17\n\x04uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"\x12\n\x03Uri\x12\x0b\n\x03uri\x18\x01 \x01(\t\"\xb5\x02\n\x0e\x43omponentState\x12\x36\n\x12state_last_changed\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12-\n\x0b\x61\x64min_state\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12+\n\noper_state\x18\x03 \x01(\x0e\x32\x17.dmi.ComponentOperState\x12-\n\x0busage_state\x18\x04 \x01(\x0e\x32\x18.dmi.ComponentUsageState\x12-\n\x0b\x61larm_state\x18\x05 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\x12\x31\n\rstandby_state\x18\x06 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\"\x90\x02\n\x13\x43omponentSensorData\x12\r\n\x05value\x18\x01 \x01(\x05\x12 \n\x04type\x18\x02 \x01(\x0e\x32\x12.dmi.DataValueType\x12\x1e\n\x05scale\x18\x03 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x11\n\tprecision\x18\x04 \x01(\x05\x12!\n\x06status\x18\x05 \x01(\x0e\x32\x11.dmi.SensorStatus\x12\x15\n\runits_display\x18\x06 \x01(\t\x12-\n\ttimestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x11value_update_rate\x18\x08 \x01(\r\x12\x11\n\tdata_type\x18\t \x01(\t\"\x82\x05\n\x17PortComponentAttributes\x12\x42\n\x0e\x63onnector_type\x18\x01 \x01(\x0e\x32*.dmi.PortComponentAttributes.ConnectorType\x12\x31\n\x05speed\x18\x02 \x01(\x0e\x32\".dmi.PortComponentAttributes.Speed\x12\x37\n\x08protocol\x18\x03 \x01(\x0e\x32%.dmi.PortComponentAttributes.Protocol\x12\x16\n\x0ephysical_label\x18\x04 \x01(\t\"p\n\rConnectorType\x12\x1c\n\x18\x43ONNECTOR_TYPE_UNDEFINED\x10\x00\x12\x08\n\x04RJ45\x10\x01\x12\x0c\n\x08\x46IBER_LC\x10\x02\x12\x0f\n\x0b\x46IBER_SC_PC\x10\x03\x12\r\n\tFIBER_MPO\x10\x04\x12\t\n\x05RS232\x10\x05\"\xae\x01\n\x05Speed\x12\x13\n\x0fSPEED_UNDEFINED\x10\x00\x12\x0b\n\x07\x44YNAMIC\x10\x01\x12\r\n\tGIGABIT_1\x10\x02\x12\x0e\n\nGIGABIT_10\x10\x03\x12\x0e\n\nGIGABIT_25\x10\x04\x12\x0e\n\nGIGABIT_40\x10\x05\x12\x0f\n\x0bGIGABIT_100\x10\x06\x12\x0f\n\x0bGIGABIT_400\x10\x07\x12\x10\n\x0cMEGABIT_2500\x10\x08\x12\x10\n\x0cMEGABIT_1250\x10\t\"|\n\x08Protocol\x12\x16\n\x12PROTOCOL_UNDEFINED\x10\x00\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x08\n\x04GPON\x10\x02\x12\t\n\x05XGPON\x10\x03\x12\n\n\x06XGSPON\x10\x04\x12\t\n\x05GFAST\x10\x05\x12\n\n\x06SERIAL\x10\x06\x12\x08\n\x04\x45PON\x10\x07\x12\x08\n\x04\x42ITS\x10\x08\"6\n\x1c\x43ontainerComponentAttributes\x12\x16\n\x0ephysical_label\x18\x01 \x01(\t\"\xb3\x01\n\x16PsuComponentAttributes\x12G\n\x11supported_voltage\x18\x01 \x01(\x0e\x32,.dmi.PsuComponentAttributes.SupportedVoltage\"P\n\x10SupportedVoltage\x12\x1f\n\x1bSUPPORTED_VOLTAGE_UNDEFINED\x10\x00\x12\x07\n\x03V48\x10\x01\x12\x08\n\x04V230\x10\x02\x12\x08\n\x04V115\x10\x03\"\xef\x04\n\x1fTransceiverComponentsAttributes\x12\x44\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32/.dmi.TransceiverComponentsAttributes.FormFactor\x12=\n\ntrans_type\x18\x02 \x01(\x0e\x32).dmi.TransceiverComponentsAttributes.Type\x12\x14\n\x0cmax_distance\x18\x03 \x01(\r\x12+\n\x12max_distance_scale\x18\x04 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x15\n\rrx_wavelength\x18\x05 \x03(\r\x12\x15\n\rtx_wavelength\x18\x06 \x03(\r\x12)\n\x10wavelength_scale\x18\x07 \x01(\x0e\x32\x0f.dmi.ValueScale\"\xc0\x01\n\nFormFactor\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\x08\n\x04QSFP\x10\x01\x12\r\n\tQSFP_PLUS\x10\x02\x12\n\n\x06QSFP28\x10\x03\x12\x07\n\x03SFP\x10\x04\x12\x0c\n\x08SFP_PLUS\x10\x05\x12\x07\n\x03XFP\x10\x06\x12\x08\n\x04\x43\x46P4\x10\x07\x12\x08\n\x04\x43\x46P2\x10\x08\x12\x08\n\x04\x43PAK\x10\t\x12\x06\n\x02X2\x10\n\x12\t\n\x05OTHER\x10\x0b\x12\x07\n\x03\x43\x46P\x10\x0c\x12\x0c\n\x08\x43\x46P2_ACO\x10\r\x12\x0c\n\x08\x43\x46P2_DCO\x10\x0e\"h\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x08\n\x04GPON\x10\x02\x12\t\n\x05XGPON\x10\x03\x12\n\n\x06XGSPON\x10\x04\x12\x08\n\x04\x43PON\x10\x05\x12\x0b\n\x07NG_PON2\x10\x06\x12\x08\n\x04\x45PON\x10\x07\"\xe8\x05\n\tComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05\x63lass\x18\x02 \x01(\x0e\x32\x12.dmi.ComponentType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0e\n\x06parent\x18\x04 \x01(\t\x12\x16\n\x0eparent_rel_pos\x18\x05 \x01(\x05\x12 \n\x08\x63hildren\x18\x06 \x03(\x0b\x32\x0e.dmi.Component\x12\x14\n\x0chardware_rev\x18\x07 \x01(\t\x12\x14\n\x0c\x66irmware_rev\x18\x08 \x01(\t\x12\x14\n\x0csoftware_rev\x18\t \x01(\t\x12\x12\n\nserial_num\x18\n \x01(\t\x12\x10\n\x08mfg_name\x18\x0b \x01(\t\x12\x12\n\nmodel_name\x18\x0c \x01(\t\x12\r\n\x05\x61lias\x18\r \x01(\t\x12\x10\n\x08\x61sset_id\x18\x0e \x01(\t\x12\x0e\n\x06is_fru\x18\x0f \x01(\x08\x12,\n\x08mfg_date\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\x03uri\x18\x11 \x01(\x0b\x32\x08.dmi.Uri\x12\x17\n\x04uuid\x18\x12 \x01(\x0b\x32\t.dmi.Uuid\x12\"\n\x05state\x18\x13 \x01(\x0b\x32\x13.dmi.ComponentState\x12-\n\x0bsensor_data\x18\x14 \x03(\x0b\x32\x18.dmi.ComponentSensorData\x12\x31\n\tport_attr\x18\x32 \x01(\x0b\x32\x1c.dmi.PortComponentAttributesH\x00\x12;\n\x0e\x63ontainer_attr\x18\x33 \x01(\x0b\x32!.dmi.ContainerComponentAttributesH\x00\x12/\n\x08psu_attr\x18\x34 \x01(\x0b\x32\x1b.dmi.PsuComponentAttributesH\x00\x12@\n\x10transceiver_attr\x18\x35 \x01(\x0b\x32$.dmi.TransceiverComponentsAttributesH\x00\x42\n\n\x08specific\"\x8a\x01\n\x08Hardware\x12/\n\x0blast_change\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1c\n\x04root\x18\x02 \x01(\x0b\x32\x0e.dmi.Component\x12/\n\x0blast_booted\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe5\x01\n\x13ModifiableComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05\x63lass\x18\x02 \x01(\x0e\x32\x12.dmi.ComponentType\x12\x1e\n\x06parent\x18\x03 \x01(\x0b\x32\x0e.dmi.Component\x12\x16\n\x0eparent_rel_pos\x18\x04 \x01(\x05\x12\r\n\x05\x61lias\x18\x05 \x01(\t\x12\x10\n\x08\x61sset_id\x18\x06 \x01(\t\x12\x15\n\x03uri\x18\x07 \x01(\x0b\x32\x08.dmi.Uri\x12-\n\x0b\x61\x64min_state\x18\x08 \x01(\x0e\x32\x18.dmi.ComponentAdminState*\xb4\x03\n\rComponentType\x12\x1c\n\x18\x43OMPONENT_TYPE_UNDEFINED\x10\x00\x12\x1a\n\x16\x43OMPONENT_TYPE_UNKNOWN\x10\x01\x12\x1a\n\x16\x43OMPONENT_TYPE_CHASSIS\x10\x02\x12\x1c\n\x18\x43OMPONENT_TYPE_BACKPLANE\x10\x03\x12\x1c\n\x18\x43OMPONENT_TYPE_CONTAINER\x10\x04\x12\x1f\n\x1b\x43OMPONENT_TYPE_POWER_SUPPLY\x10\x05\x12\x16\n\x12\x43OMPONENT_TYPE_FAN\x10\x06\x12\x19\n\x15\x43OMPONENT_TYPE_SENSOR\x10\x07\x12\x19\n\x15\x43OMPONENT_TYPE_MODULE\x10\x08\x12\x17\n\x13\x43OMPONENT_TYPE_PORT\x10\t\x12\x16\n\x12\x43OMPONENT_TYPE_CPU\x10\n\x12\x1a\n\x16\x43OMPONENT_TYPE_BATTERY\x10\x0b\x12\x1a\n\x16\x43OMPONENT_TYPE_STORAGE\x10\x0c\x12\x19\n\x15\x43OMPONENT_TYPE_MEMORY\x10\r\x12\x1e\n\x1a\x43OMPONENT_TYPE_TRANSCEIVER\x10\x0e*\xb3\x01\n\x13\x43omponentAdminState\x12\x1e\n\x1a\x43OMP_ADMIN_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_ADMIN_STATE_UNKNOWN\x10\x01\x12\x1b\n\x17\x43OMP_ADMIN_STATE_LOCKED\x10\x02\x12\"\n\x1e\x43OMP_ADMIN_STATE_SHUTTING_DOWN\x10\x03\x12\x1d\n\x19\x43OMP_ADMIN_STATE_UNLOCKED\x10\x04*\xa8\x01\n\x12\x43omponentOperState\x12\x1d\n\x19\x43OMP_OPER_STATE_UNDEFINED\x10\x00\x12\x1b\n\x17\x43OMP_OPER_STATE_UNKNOWN\x10\x01\x12\x1c\n\x18\x43OMP_OPER_STATE_DISABLED\x10\x02\x12\x1b\n\x17\x43OMP_OPER_STATE_ENABLED\x10\x03\x12\x1b\n\x17\x43OMP_OPER_STATE_TESTING\x10\x04*\xa6\x01\n\x13\x43omponentUsageState\x12\x1e\n\x1a\x43OMP_USAGE_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_USAGE_STATE_UNKNOWN\x10\x01\x12\x19\n\x15\x43OMP_USAGE_STATE_IDLE\x10\x02\x12\x1b\n\x17\x43OMP_USAGE_STATE_ACTIVE\x10\x03\x12\x19\n\x15\x43OMP_USAGE_STATE_BUSY\x10\x04*\x8f\x02\n\x13\x43omponentAlarmState\x12\x1e\n\x1a\x43OMP_ALARM_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_ALARM_STATE_UNKNOWN\x10\x01\x12!\n\x1d\x43OMP_ALARM_STATE_UNDER_REPAIR\x10\x02\x12\x1d\n\x19\x43OMP_ALARM_STATE_CRITICAL\x10\x03\x12\x1a\n\x16\x43OMP_ALARM_STATE_MAJOR\x10\x04\x12\x1a\n\x16\x43OMP_ALARM_STATE_MINOR\x10\x05\x12\x1c\n\x18\x43OMP_ALARM_STATE_WARNING\x10\x06\x12\"\n\x1e\x43OMP_ALARM_STATE_INDETERMINATE\x10\x07*\xbc\x01\n\x15\x43omponentStandbyState\x12 \n\x1c\x43OMP_STANDBY_STATE_UNDEFINED\x10\x00\x12\x1e\n\x1a\x43OMP_STANDBY_STATE_UNKNOWN\x10\x01\x12\x1a\n\x16\x43OMP_STANDBY_STATE_HOT\x10\x02\x12\x1b\n\x17\x43OMP_STANDBY_STATE_COLD\x10\x03\x12(\n$COMP_STANDBY_STATE_PROVIDING_SERVICE\x10\x04*\x89\x03\n\rDataValueType\x12\x18\n\x14VALUE_TYPE_UNDEFINED\x10\x00\x12\x14\n\x10VALUE_TYPE_OTHER\x10\x01\x12\x16\n\x12VALUE_TYPE_UNKNOWN\x10\x02\x12\x17\n\x13VALUE_TYPE_VOLTS_AC\x10\x03\x12\x17\n\x13VALUE_TYPE_VOLTS_DC\x10\x04\x12\x16\n\x12VALUE_TYPE_AMPERES\x10\x05\x12\x14\n\x10VALUE_TYPE_WATTS\x10\x06\x12\x14\n\x10VALUE_TYPE_HERTZ\x10\x07\x12\x16\n\x12VALUE_TYPE_CELSIUS\x10\x08\x12\x19\n\x15VALUE_TYPE_PERCENT_RH\x10\t\x12\x12\n\x0eVALUE_TYPE_RPM\x10\n\x12\x12\n\x0eVALUE_TYPE_CMM\x10\x0b\x12\x1a\n\x16VALUE_TYPE_TRUTH_VALUE\x10\x0c\x12\x16\n\x12VALUE_TYPE_PERCENT\x10\r\x12\x15\n\x11VALUE_TYPE_METERS\x10\x0e\x12\x14\n\x10VALUE_TYPE_BYTES\x10\x0f*\xa4\x03\n\nValueScale\x12\x19\n\x15VALUE_SCALE_UNDEFINED\x10\x00\x12\x15\n\x11VALUE_SCALE_YOCTO\x10\x01\x12\x15\n\x11VALUE_SCALE_ZEPTO\x10\x02\x12\x14\n\x10VALUE_SCALE_ATTO\x10\x03\x12\x15\n\x11VALUE_SCALE_FEMTO\x10\x04\x12\x14\n\x10VALUE_SCALE_PICO\x10\x05\x12\x14\n\x10VALUE_SCALE_NANO\x10\x06\x12\x15\n\x11VALUE_SCALE_MICRO\x10\x07\x12\x15\n\x11VALUE_SCALE_MILLI\x10\x08\x12\x15\n\x11VALUE_SCALE_UNITS\x10\t\x12\x14\n\x10VALUE_SCALE_KILO\x10\n\x12\x14\n\x10VALUE_SCALE_MEGA\x10\x0b\x12\x14\n\x10VALUE_SCALE_GIGA\x10\x0c\x12\x14\n\x10VALUE_SCALE_TERA\x10\r\x12\x14\n\x10VALUE_SCALE_PETA\x10\x0e\x12\x13\n\x0fVALUE_SCALE_EXA\x10\x0f\x12\x15\n\x11VALUE_SCALE_ZETTA\x10\x10\x12\x15\n\x11VALUE_SCALE_YOTTA\x10\x11*\x82\x01\n\x0cSensorStatus\x12\x1b\n\x17SENSOR_STATUS_UNDEFINED\x10\x00\x12\x14\n\x10SENSOR_STATUS_OK\x10\x01\x12\x1d\n\x19SENSOR_STATUS_UNAVAILABLE\x10\x02\x12 \n\x1cSENSOR_STATUS_NONOPERATIONAL\x10\x03\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
+  serialized_pb=b'\n\x0c\x64mi/hw.proto\x12\x03\x64mi\x1a\x1fgoogle/protobuf/timestamp.proto\"\x14\n\x04Uuid\x12\x0c\n\x04uuid\x18\x01 \x01(\t\"%\n\nHardwareID\x12\x17\n\x04uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"\x12\n\x03Uri\x12\x0b\n\x03uri\x18\x01 \x01(\t\"\xb5\x02\n\x0e\x43omponentState\x12\x36\n\x12state_last_changed\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12-\n\x0b\x61\x64min_state\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12+\n\noper_state\x18\x03 \x01(\x0e\x32\x17.dmi.ComponentOperState\x12-\n\x0busage_state\x18\x04 \x01(\x0e\x32\x18.dmi.ComponentUsageState\x12-\n\x0b\x61larm_state\x18\x05 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\x12\x31\n\rstandby_state\x18\x06 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\"\x90\x02\n\x13\x43omponentSensorData\x12\r\n\x05value\x18\x01 \x01(\x05\x12 \n\x04type\x18\x02 \x01(\x0e\x32\x12.dmi.DataValueType\x12\x1e\n\x05scale\x18\x03 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x11\n\tprecision\x18\x04 \x01(\x05\x12!\n\x06status\x18\x05 \x01(\x0e\x32\x11.dmi.SensorStatus\x12\x15\n\runits_display\x18\x06 \x01(\t\x12-\n\ttimestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x11value_update_rate\x18\x08 \x01(\r\x12\x11\n\tdata_type\x18\t \x01(\t\"\xc2\x05\n\x17PortComponentAttributes\x12\x42\n\x0e\x63onnector_type\x18\x01 \x01(\x0e\x32*.dmi.PortComponentAttributes.ConnectorType\x12\x31\n\x05speed\x18\x02 \x01(\x0e\x32\".dmi.PortComponentAttributes.Speed\x12\x37\n\x08protocol\x18\x03 \x01(\x0e\x32%.dmi.PortComponentAttributes.Protocol\x12\x16\n\x0ephysical_label\x18\x04 \x01(\t\x12\x15\n\rmapping_label\x18\x05 \x01(\t\x12\'\n\rpon_id_config\x18\x06 \x01(\x0b\x32\x10.dmi.PonIdConfig\"p\n\rConnectorType\x12\x1c\n\x18\x43ONNECTOR_TYPE_UNDEFINED\x10\x00\x12\x08\n\x04RJ45\x10\x01\x12\x0c\n\x08\x46IBER_LC\x10\x02\x12\x0f\n\x0b\x46IBER_SC_PC\x10\x03\x12\r\n\tFIBER_MPO\x10\x04\x12\t\n\x05RS232\x10\x05\"\xae\x01\n\x05Speed\x12\x13\n\x0fSPEED_UNDEFINED\x10\x00\x12\x0b\n\x07\x44YNAMIC\x10\x01\x12\r\n\tGIGABIT_1\x10\x02\x12\x0e\n\nGIGABIT_10\x10\x03\x12\x0e\n\nGIGABIT_25\x10\x04\x12\x0e\n\nGIGABIT_40\x10\x05\x12\x0f\n\x0bGIGABIT_100\x10\x06\x12\x0f\n\x0bGIGABIT_400\x10\x07\x12\x10\n\x0cMEGABIT_2500\x10\x08\x12\x10\n\x0cMEGABIT_1250\x10\t\"|\n\x08Protocol\x12\x16\n\x12PROTOCOL_UNDEFINED\x10\x00\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x08\n\x04GPON\x10\x02\x12\t\n\x05XGPON\x10\x03\x12\n\n\x06XGSPON\x10\x04\x12\t\n\x05GFAST\x10\x05\x12\n\n\x06SERIAL\x10\x06\x12\x08\n\x04\x45PON\x10\x07\x12\x08\n\x04\x42ITS\x10\x08\"H\n\x1dPortComponentChangeAttributes\x12\'\n\rpon_id_config\x18\x01 \x01(\x0b\x32\x10.dmi.PonIdConfig\"B\n\x0bPonIdConfig\x12\x0e\n\x06pon_id\x18\x01 \x01(\x0c\x12#\n\x1bpon_id_transmit_periodicity\x18\x02 \x01(\r\"6\n\x1c\x43ontainerComponentAttributes\x12\x16\n\x0ephysical_label\x18\x01 \x01(\t\"\xb3\x01\n\x16PsuComponentAttributes\x12G\n\x11supported_voltage\x18\x01 \x01(\x0e\x32,.dmi.PsuComponentAttributes.SupportedVoltage\"P\n\x10SupportedVoltage\x12\x1f\n\x1bSUPPORTED_VOLTAGE_UNDEFINED\x10\x00\x12\x07\n\x03V48\x10\x01\x12\x08\n\x04V230\x10\x02\x12\x08\n\x04V115\x10\x03\"\xef\x04\n\x1fTransceiverComponentsAttributes\x12\x44\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32/.dmi.TransceiverComponentsAttributes.FormFactor\x12=\n\ntrans_type\x18\x02 \x01(\x0e\x32).dmi.TransceiverComponentsAttributes.Type\x12\x14\n\x0cmax_distance\x18\x03 \x01(\r\x12+\n\x12max_distance_scale\x18\x04 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x15\n\rrx_wavelength\x18\x05 \x03(\r\x12\x15\n\rtx_wavelength\x18\x06 \x03(\r\x12)\n\x10wavelength_scale\x18\x07 \x01(\x0e\x32\x0f.dmi.ValueScale\"\xc0\x01\n\nFormFactor\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\x08\n\x04QSFP\x10\x01\x12\r\n\tQSFP_PLUS\x10\x02\x12\n\n\x06QSFP28\x10\x03\x12\x07\n\x03SFP\x10\x04\x12\x0c\n\x08SFP_PLUS\x10\x05\x12\x07\n\x03XFP\x10\x06\x12\x08\n\x04\x43\x46P4\x10\x07\x12\x08\n\x04\x43\x46P2\x10\x08\x12\x08\n\x04\x43PAK\x10\t\x12\x06\n\x02X2\x10\n\x12\t\n\x05OTHER\x10\x0b\x12\x07\n\x03\x43\x46P\x10\x0c\x12\x0c\n\x08\x43\x46P2_ACO\x10\r\x12\x0c\n\x08\x43\x46P2_DCO\x10\x0e\"h\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x08\n\x04GPON\x10\x02\x12\t\n\x05XGPON\x10\x03\x12\n\n\x06XGSPON\x10\x04\x12\x08\n\x04\x43PON\x10\x05\x12\x0b\n\x07NG_PON2\x10\x06\x12\x08\n\x04\x45PON\x10\x07\"\xe8\x05\n\tComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05\x63lass\x18\x02 \x01(\x0e\x32\x12.dmi.ComponentType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0e\n\x06parent\x18\x04 \x01(\t\x12\x16\n\x0eparent_rel_pos\x18\x05 \x01(\x05\x12 \n\x08\x63hildren\x18\x06 \x03(\x0b\x32\x0e.dmi.Component\x12\x14\n\x0chardware_rev\x18\x07 \x01(\t\x12\x14\n\x0c\x66irmware_rev\x18\x08 \x01(\t\x12\x14\n\x0csoftware_rev\x18\t \x01(\t\x12\x12\n\nserial_num\x18\n \x01(\t\x12\x10\n\x08mfg_name\x18\x0b \x01(\t\x12\x12\n\nmodel_name\x18\x0c \x01(\t\x12\r\n\x05\x61lias\x18\r \x01(\t\x12\x10\n\x08\x61sset_id\x18\x0e \x01(\t\x12\x0e\n\x06is_fru\x18\x0f \x01(\x08\x12,\n\x08mfg_date\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\x03uri\x18\x11 \x01(\x0b\x32\x08.dmi.Uri\x12\x17\n\x04uuid\x18\x12 \x01(\x0b\x32\t.dmi.Uuid\x12\"\n\x05state\x18\x13 \x01(\x0b\x32\x13.dmi.ComponentState\x12-\n\x0bsensor_data\x18\x14 \x03(\x0b\x32\x18.dmi.ComponentSensorData\x12\x31\n\tport_attr\x18\x32 \x01(\x0b\x32\x1c.dmi.PortComponentAttributesH\x00\x12;\n\x0e\x63ontainer_attr\x18\x33 \x01(\x0b\x32!.dmi.ContainerComponentAttributesH\x00\x12/\n\x08psu_attr\x18\x34 \x01(\x0b\x32\x1b.dmi.PsuComponentAttributesH\x00\x12@\n\x10transceiver_attr\x18\x35 \x01(\x0b\x32$.dmi.TransceiverComponentsAttributesH\x00\x42\n\n\x08specific\"\x8a\x01\n\x08Hardware\x12/\n\x0blast_change\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1c\n\x04root\x18\x02 \x01(\x0b\x32\x0e.dmi.Component\x12/\n\x0blast_booted\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xaa\x02\n\x13ModifiableComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05\x63lass\x18\x02 \x01(\x0e\x32\x12.dmi.ComponentType\x12\x1e\n\x06parent\x18\x03 \x01(\x0b\x32\x0e.dmi.Component\x12\x16\n\x0eparent_rel_pos\x18\x04 \x01(\x05\x12\r\n\x05\x61lias\x18\x05 \x01(\t\x12\x10\n\x08\x61sset_id\x18\x06 \x01(\t\x12\x15\n\x03uri\x18\x07 \x01(\x0b\x32\x08.dmi.Uri\x12-\n\x0b\x61\x64min_state\x18\x08 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12\x37\n\tport_attr\x18\x32 \x01(\x0b\x32\".dmi.PortComponentChangeAttributesH\x00\x42\n\n\x08specific*\xb4\x03\n\rComponentType\x12\x1c\n\x18\x43OMPONENT_TYPE_UNDEFINED\x10\x00\x12\x1a\n\x16\x43OMPONENT_TYPE_UNKNOWN\x10\x01\x12\x1a\n\x16\x43OMPONENT_TYPE_CHASSIS\x10\x02\x12\x1c\n\x18\x43OMPONENT_TYPE_BACKPLANE\x10\x03\x12\x1c\n\x18\x43OMPONENT_TYPE_CONTAINER\x10\x04\x12\x1f\n\x1b\x43OMPONENT_TYPE_POWER_SUPPLY\x10\x05\x12\x16\n\x12\x43OMPONENT_TYPE_FAN\x10\x06\x12\x19\n\x15\x43OMPONENT_TYPE_SENSOR\x10\x07\x12\x19\n\x15\x43OMPONENT_TYPE_MODULE\x10\x08\x12\x17\n\x13\x43OMPONENT_TYPE_PORT\x10\t\x12\x16\n\x12\x43OMPONENT_TYPE_CPU\x10\n\x12\x1a\n\x16\x43OMPONENT_TYPE_BATTERY\x10\x0b\x12\x1a\n\x16\x43OMPONENT_TYPE_STORAGE\x10\x0c\x12\x19\n\x15\x43OMPONENT_TYPE_MEMORY\x10\r\x12\x1e\n\x1a\x43OMPONENT_TYPE_TRANSCEIVER\x10\x0e*\xb3\x01\n\x13\x43omponentAdminState\x12\x1e\n\x1a\x43OMP_ADMIN_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_ADMIN_STATE_UNKNOWN\x10\x01\x12\x1b\n\x17\x43OMP_ADMIN_STATE_LOCKED\x10\x02\x12\"\n\x1e\x43OMP_ADMIN_STATE_SHUTTING_DOWN\x10\x03\x12\x1d\n\x19\x43OMP_ADMIN_STATE_UNLOCKED\x10\x04*\xa8\x01\n\x12\x43omponentOperState\x12\x1d\n\x19\x43OMP_OPER_STATE_UNDEFINED\x10\x00\x12\x1b\n\x17\x43OMP_OPER_STATE_UNKNOWN\x10\x01\x12\x1c\n\x18\x43OMP_OPER_STATE_DISABLED\x10\x02\x12\x1b\n\x17\x43OMP_OPER_STATE_ENABLED\x10\x03\x12\x1b\n\x17\x43OMP_OPER_STATE_TESTING\x10\x04*\xa6\x01\n\x13\x43omponentUsageState\x12\x1e\n\x1a\x43OMP_USAGE_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_USAGE_STATE_UNKNOWN\x10\x01\x12\x19\n\x15\x43OMP_USAGE_STATE_IDLE\x10\x02\x12\x1b\n\x17\x43OMP_USAGE_STATE_ACTIVE\x10\x03\x12\x19\n\x15\x43OMP_USAGE_STATE_BUSY\x10\x04*\x8f\x02\n\x13\x43omponentAlarmState\x12\x1e\n\x1a\x43OMP_ALARM_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_ALARM_STATE_UNKNOWN\x10\x01\x12!\n\x1d\x43OMP_ALARM_STATE_UNDER_REPAIR\x10\x02\x12\x1d\n\x19\x43OMP_ALARM_STATE_CRITICAL\x10\x03\x12\x1a\n\x16\x43OMP_ALARM_STATE_MAJOR\x10\x04\x12\x1a\n\x16\x43OMP_ALARM_STATE_MINOR\x10\x05\x12\x1c\n\x18\x43OMP_ALARM_STATE_WARNING\x10\x06\x12\"\n\x1e\x43OMP_ALARM_STATE_INDETERMINATE\x10\x07*\xbc\x01\n\x15\x43omponentStandbyState\x12 \n\x1c\x43OMP_STANDBY_STATE_UNDEFINED\x10\x00\x12\x1e\n\x1a\x43OMP_STANDBY_STATE_UNKNOWN\x10\x01\x12\x1a\n\x16\x43OMP_STANDBY_STATE_HOT\x10\x02\x12\x1b\n\x17\x43OMP_STANDBY_STATE_COLD\x10\x03\x12(\n$COMP_STANDBY_STATE_PROVIDING_SERVICE\x10\x04*\x89\x03\n\rDataValueType\x12\x18\n\x14VALUE_TYPE_UNDEFINED\x10\x00\x12\x14\n\x10VALUE_TYPE_OTHER\x10\x01\x12\x16\n\x12VALUE_TYPE_UNKNOWN\x10\x02\x12\x17\n\x13VALUE_TYPE_VOLTS_AC\x10\x03\x12\x17\n\x13VALUE_TYPE_VOLTS_DC\x10\x04\x12\x16\n\x12VALUE_TYPE_AMPERES\x10\x05\x12\x14\n\x10VALUE_TYPE_WATTS\x10\x06\x12\x14\n\x10VALUE_TYPE_HERTZ\x10\x07\x12\x16\n\x12VALUE_TYPE_CELSIUS\x10\x08\x12\x19\n\x15VALUE_TYPE_PERCENT_RH\x10\t\x12\x12\n\x0eVALUE_TYPE_RPM\x10\n\x12\x12\n\x0eVALUE_TYPE_CMM\x10\x0b\x12\x1a\n\x16VALUE_TYPE_TRUTH_VALUE\x10\x0c\x12\x16\n\x12VALUE_TYPE_PERCENT\x10\r\x12\x15\n\x11VALUE_TYPE_METERS\x10\x0e\x12\x14\n\x10VALUE_TYPE_BYTES\x10\x0f*\xa4\x03\n\nValueScale\x12\x19\n\x15VALUE_SCALE_UNDEFINED\x10\x00\x12\x15\n\x11VALUE_SCALE_YOCTO\x10\x01\x12\x15\n\x11VALUE_SCALE_ZEPTO\x10\x02\x12\x14\n\x10VALUE_SCALE_ATTO\x10\x03\x12\x15\n\x11VALUE_SCALE_FEMTO\x10\x04\x12\x14\n\x10VALUE_SCALE_PICO\x10\x05\x12\x14\n\x10VALUE_SCALE_NANO\x10\x06\x12\x15\n\x11VALUE_SCALE_MICRO\x10\x07\x12\x15\n\x11VALUE_SCALE_MILLI\x10\x08\x12\x15\n\x11VALUE_SCALE_UNITS\x10\t\x12\x14\n\x10VALUE_SCALE_KILO\x10\n\x12\x14\n\x10VALUE_SCALE_MEGA\x10\x0b\x12\x14\n\x10VALUE_SCALE_GIGA\x10\x0c\x12\x14\n\x10VALUE_SCALE_TERA\x10\r\x12\x14\n\x10VALUE_SCALE_PETA\x10\x0e\x12\x13\n\x0fVALUE_SCALE_EXA\x10\x0f\x12\x15\n\x11VALUE_SCALE_ZETTA\x10\x10\x12\x15\n\x11VALUE_SCALE_YOTTA\x10\x11*\x82\x01\n\x0cSensorStatus\x12\x1b\n\x17SENSOR_STATUS_UNDEFINED\x10\x00\x12\x14\n\x10SENSOR_STATUS_OK\x10\x01\x12\x1d\n\x19SENSOR_STATUS_UNAVAILABLE\x10\x02\x12 \n\x1cSENSOR_STATUS_NONOPERATIONAL\x10\x03\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3'
   ,
   dependencies=[google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,])
 
@@ -110,8 +110,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3352,
-  serialized_end=3788,
+  serialized_start=3627,
+  serialized_end=4063,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENTTYPE)
 
@@ -151,8 +151,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3791,
-  serialized_end=3970,
+  serialized_start=4066,
+  serialized_end=4245,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENTADMINSTATE)
 
@@ -192,8 +192,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=3973,
-  serialized_end=4141,
+  serialized_start=4248,
+  serialized_end=4416,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENTOPERSTATE)
 
@@ -233,8 +233,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4144,
-  serialized_end=4310,
+  serialized_start=4419,
+  serialized_end=4585,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENTUSAGESTATE)
 
@@ -289,8 +289,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4313,
-  serialized_end=4584,
+  serialized_start=4588,
+  serialized_end=4859,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENTALARMSTATE)
 
@@ -330,8 +330,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4587,
-  serialized_end=4775,
+  serialized_start=4862,
+  serialized_end=5050,
 )
 _sym_db.RegisterEnumDescriptor(_COMPONENTSTANDBYSTATE)
 
@@ -426,8 +426,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4778,
-  serialized_end=5171,
+  serialized_start=5053,
+  serialized_end=5446,
 )
 _sym_db.RegisterEnumDescriptor(_DATAVALUETYPE)
 
@@ -532,8 +532,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5174,
-  serialized_end=5594,
+  serialized_start=5449,
+  serialized_end=5869,
 )
 _sym_db.RegisterEnumDescriptor(_VALUESCALE)
 
@@ -568,8 +568,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5597,
-  serialized_end=5727,
+  serialized_start=5872,
+  serialized_end=6002,
 )
 _sym_db.RegisterEnumDescriptor(_SENSORSTATUS)
 
@@ -697,8 +697,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=950,
-  serialized_end=1062,
+  serialized_start=1014,
+  serialized_end=1126,
 )
 _sym_db.RegisterEnumDescriptor(_PORTCOMPONENTATTRIBUTES_CONNECTORTYPE)
 
@@ -762,8 +762,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1065,
-  serialized_end=1239,
+  serialized_start=1129,
+  serialized_end=1303,
 )
 _sym_db.RegisterEnumDescriptor(_PORTCOMPONENTATTRIBUTES_SPEED)
 
@@ -822,8 +822,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1241,
-  serialized_end=1365,
+  serialized_start=1305,
+  serialized_end=1429,
 )
 _sym_db.RegisterEnumDescriptor(_PORTCOMPONENTATTRIBUTES_PROTOCOL)
 
@@ -857,8 +857,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1523,
-  serialized_end=1603,
+  serialized_start=1729,
+  serialized_end=1809,
 )
 _sym_db.RegisterEnumDescriptor(_PSUCOMPONENTATTRIBUTES_SUPPORTEDVOLTAGE)
 
@@ -947,8 +947,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=1931,
-  serialized_end=2123,
+  serialized_start=2137,
+  serialized_end=2329,
 )
 _sym_db.RegisterEnumDescriptor(_TRANSCEIVERCOMPONENTSATTRIBUTES_FORMFACTOR)
 
@@ -1002,8 +1002,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=2125,
-  serialized_end=2229,
+  serialized_start=2331,
+  serialized_end=2435,
 )
 _sym_db.RegisterEnumDescriptor(_TRANSCEIVERCOMPONENTSATTRIBUTES_TYPE)
 
@@ -1295,6 +1295,20 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='mapping_label', full_name='dmi.PortComponentAttributes.mapping_label', index=4,
+      number=5, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='pon_id_config', full_name='dmi.PortComponentAttributes.pon_id_config', index=5,
+      number=6, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -1311,7 +1325,78 @@
   oneofs=[
   ],
   serialized_start=723,
-  serialized_end=1365,
+  serialized_end=1429,
+)
+
+
+_PORTCOMPONENTCHANGEATTRIBUTES = _descriptor.Descriptor(
+  name='PortComponentChangeAttributes',
+  full_name='dmi.PortComponentChangeAttributes',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='pon_id_config', full_name='dmi.PortComponentChangeAttributes.pon_id_config', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1431,
+  serialized_end=1503,
+)
+
+
+_PONIDCONFIG = _descriptor.Descriptor(
+  name='PonIdConfig',
+  full_name='dmi.PonIdConfig',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='pon_id', full_name='dmi.PonIdConfig.pon_id', index=0,
+      number=1, type=12, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"",
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='pon_id_transmit_periodicity', full_name='dmi.PonIdConfig.pon_id_transmit_periodicity', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=1505,
+  serialized_end=1571,
 )
 
 
@@ -1342,8 +1427,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1367,
-  serialized_end=1421,
+  serialized_start=1573,
+  serialized_end=1627,
 )
 
 
@@ -1375,8 +1460,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1424,
-  serialized_end=1603,
+  serialized_start=1630,
+  serialized_end=1809,
 )
 
 
@@ -1451,8 +1536,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1606,
-  serialized_end=2229,
+  serialized_start=1812,
+  serialized_end=2435,
 )
 
 
@@ -1649,8 +1734,8 @@
       create_key=_descriptor._internal_create_key,
     fields=[]),
   ],
-  serialized_start=2232,
-  serialized_end=2976,
+  serialized_start=2438,
+  serialized_end=3182,
 )
 
 
@@ -1695,8 +1780,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2979,
-  serialized_end=3117,
+  serialized_start=3185,
+  serialized_end=3323,
 )
 
 
@@ -1764,6 +1849,13 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='port_attr', full_name='dmi.ModifiableComponent.port_attr', index=8,
+      number=50, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -1775,9 +1867,14 @@
   syntax='proto3',
   extension_ranges=[],
   oneofs=[
+    _descriptor.OneofDescriptor(
+      name='specific', full_name='dmi.ModifiableComponent.specific',
+      index=0, containing_type=None,
+      create_key=_descriptor._internal_create_key,
+    fields=[]),
   ],
-  serialized_start=3120,
-  serialized_end=3349,
+  serialized_start=3326,
+  serialized_end=3624,
 )
 
 _HARDWAREID.fields_by_name['uuid'].message_type = _UUID
@@ -1794,9 +1891,11 @@
 _PORTCOMPONENTATTRIBUTES.fields_by_name['connector_type'].enum_type = _PORTCOMPONENTATTRIBUTES_CONNECTORTYPE
 _PORTCOMPONENTATTRIBUTES.fields_by_name['speed'].enum_type = _PORTCOMPONENTATTRIBUTES_SPEED
 _PORTCOMPONENTATTRIBUTES.fields_by_name['protocol'].enum_type = _PORTCOMPONENTATTRIBUTES_PROTOCOL
+_PORTCOMPONENTATTRIBUTES.fields_by_name['pon_id_config'].message_type = _PONIDCONFIG
 _PORTCOMPONENTATTRIBUTES_CONNECTORTYPE.containing_type = _PORTCOMPONENTATTRIBUTES
 _PORTCOMPONENTATTRIBUTES_SPEED.containing_type = _PORTCOMPONENTATTRIBUTES
 _PORTCOMPONENTATTRIBUTES_PROTOCOL.containing_type = _PORTCOMPONENTATTRIBUTES
+_PORTCOMPONENTCHANGEATTRIBUTES.fields_by_name['pon_id_config'].message_type = _PONIDCONFIG
 _PSUCOMPONENTATTRIBUTES.fields_by_name['supported_voltage'].enum_type = _PSUCOMPONENTATTRIBUTES_SUPPORTEDVOLTAGE
 _PSUCOMPONENTATTRIBUTES_SUPPORTEDVOLTAGE.containing_type = _PSUCOMPONENTATTRIBUTES
 _TRANSCEIVERCOMPONENTSATTRIBUTES.fields_by_name['form_factor'].enum_type = _TRANSCEIVERCOMPONENTSATTRIBUTES_FORMFACTOR
@@ -1835,12 +1934,18 @@
 _MODIFIABLECOMPONENT.fields_by_name['parent'].message_type = _COMPONENT
 _MODIFIABLECOMPONENT.fields_by_name['uri'].message_type = _URI
 _MODIFIABLECOMPONENT.fields_by_name['admin_state'].enum_type = _COMPONENTADMINSTATE
+_MODIFIABLECOMPONENT.fields_by_name['port_attr'].message_type = _PORTCOMPONENTCHANGEATTRIBUTES
+_MODIFIABLECOMPONENT.oneofs_by_name['specific'].fields.append(
+  _MODIFIABLECOMPONENT.fields_by_name['port_attr'])
+_MODIFIABLECOMPONENT.fields_by_name['port_attr'].containing_oneof = _MODIFIABLECOMPONENT.oneofs_by_name['specific']
 DESCRIPTOR.message_types_by_name['Uuid'] = _UUID
 DESCRIPTOR.message_types_by_name['HardwareID'] = _HARDWAREID
 DESCRIPTOR.message_types_by_name['Uri'] = _URI
 DESCRIPTOR.message_types_by_name['ComponentState'] = _COMPONENTSTATE
 DESCRIPTOR.message_types_by_name['ComponentSensorData'] = _COMPONENTSENSORDATA
 DESCRIPTOR.message_types_by_name['PortComponentAttributes'] = _PORTCOMPONENTATTRIBUTES
+DESCRIPTOR.message_types_by_name['PortComponentChangeAttributes'] = _PORTCOMPONENTCHANGEATTRIBUTES
+DESCRIPTOR.message_types_by_name['PonIdConfig'] = _PONIDCONFIG
 DESCRIPTOR.message_types_by_name['ContainerComponentAttributes'] = _CONTAINERCOMPONENTATTRIBUTES
 DESCRIPTOR.message_types_by_name['PsuComponentAttributes'] = _PSUCOMPONENTATTRIBUTES
 DESCRIPTOR.message_types_by_name['TransceiverComponentsAttributes'] = _TRANSCEIVERCOMPONENTSATTRIBUTES
@@ -1900,6 +2005,20 @@
   })
 _sym_db.RegisterMessage(PortComponentAttributes)
 
+PortComponentChangeAttributes = _reflection.GeneratedProtocolMessageType('PortComponentChangeAttributes', (_message.Message,), {
+  'DESCRIPTOR' : _PORTCOMPONENTCHANGEATTRIBUTES,
+  '__module__' : 'dmi.hw_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.PortComponentChangeAttributes)
+  })
+_sym_db.RegisterMessage(PortComponentChangeAttributes)
+
+PonIdConfig = _reflection.GeneratedProtocolMessageType('PonIdConfig', (_message.Message,), {
+  'DESCRIPTOR' : _PONIDCONFIG,
+  '__module__' : 'dmi.hw_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.PonIdConfig)
+  })
+_sym_db.RegisterMessage(PonIdConfig)
+
 ContainerComponentAttributes = _reflection.GeneratedProtocolMessageType('ContainerComponentAttributes', (_message.Message,), {
   'DESCRIPTOR' : _CONTAINERCOMPONENTATTRIBUTES,
   '__module__' : 'dmi.hw_pb2'