diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
new file mode 100644
index 0000000..3975047
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
@@ -0,0 +1,642 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/common.proto
+
+package common
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type TestModeKeys int32
+
+const (
+	TestModeKeys_api_test TestModeKeys = 0
+)
+
+var TestModeKeys_name = map[int32]string{
+	0: "api_test",
+}
+
+var TestModeKeys_value = map[string]int32{
+	"api_test": 0,
+}
+
+func (x TestModeKeys) String() string {
+	return proto.EnumName(TestModeKeys_name, int32(x))
+}
+
+func (TestModeKeys) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{0}
+}
+
+// Administrative State
+type AdminState_Types int32
+
+const (
+	// The administrative state of the device is unknown
+	AdminState_UNKNOWN AdminState_Types = 0
+	// The device is pre-provisioned into Voltha, but not contacted by it
+	AdminState_PREPROVISIONED AdminState_Types = 1
+	// The device is enabled for activation and operation
+	AdminState_ENABLED AdminState_Types = 2
+	// The device is disabled and shall not perform its intended forwarding
+	// functions other than being available for re-activation.
+	AdminState_DISABLED AdminState_Types = 3
+	// The device is in the state of image download
+	AdminState_DOWNLOADING_IMAGE AdminState_Types = 4
+	// The device is marked to be deleted
+	AdminState_DELETED AdminState_Types = 5
+)
+
+var AdminState_Types_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "PREPROVISIONED",
+	2: "ENABLED",
+	3: "DISABLED",
+	4: "DOWNLOADING_IMAGE",
+	5: "DELETED",
+}
+
+var AdminState_Types_value = map[string]int32{
+	"UNKNOWN":           0,
+	"PREPROVISIONED":    1,
+	"ENABLED":           2,
+	"DISABLED":          3,
+	"DOWNLOADING_IMAGE": 4,
+	"DELETED":           5,
+}
+
+func (x AdminState_Types) String() string {
+	return proto.EnumName(AdminState_Types_name, int32(x))
+}
+
+func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{2, 0}
+}
+
+// Operational Status
+type OperStatus_Types int32
+
+const (
+	// The status of the device is unknown at this point
+	OperStatus_UNKNOWN OperStatus_Types = 0
+	// The device has been discovered, but not yet activated
+	OperStatus_DISCOVERED OperStatus_Types = 1
+	// The device is being activated (booted, rebooted, upgraded, etc.)
+	OperStatus_ACTIVATING OperStatus_Types = 2
+	// Service impacting tests are being conducted
+	OperStatus_TESTING OperStatus_Types = 3
+	// The device is up and active
+	OperStatus_ACTIVE OperStatus_Types = 4
+	// The device has failed and cannot fulfill its intended role
+	OperStatus_FAILED OperStatus_Types = 5
+)
+
+var OperStatus_Types_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "DISCOVERED",
+	2: "ACTIVATING",
+	3: "TESTING",
+	4: "ACTIVE",
+	5: "FAILED",
+}
+
+var OperStatus_Types_value = map[string]int32{
+	"UNKNOWN":    0,
+	"DISCOVERED": 1,
+	"ACTIVATING": 2,
+	"TESTING":    3,
+	"ACTIVE":     4,
+	"FAILED":     5,
+}
+
+func (x OperStatus_Types) String() string {
+	return proto.EnumName(OperStatus_Types_name, int32(x))
+}
+
+func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{3, 0}
+}
+
+// Connectivity Status
+type ConnectStatus_Types int32
+
+const (
+	// The device connectivity status is unknown
+	ConnectStatus_UNKNOWN ConnectStatus_Types = 0
+	// The device cannot be reached by Voltha
+	ConnectStatus_UNREACHABLE ConnectStatus_Types = 1
+	// There is live communication between device and Voltha
+	ConnectStatus_REACHABLE ConnectStatus_Types = 2
+)
+
+var ConnectStatus_Types_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "UNREACHABLE",
+	2: "REACHABLE",
+}
+
+var ConnectStatus_Types_value = map[string]int32{
+	"UNKNOWN":     0,
+	"UNREACHABLE": 1,
+	"REACHABLE":   2,
+}
+
+func (x ConnectStatus_Types) String() string {
+	return proto.EnumName(ConnectStatus_Types_name, int32(x))
+}
+
+func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
+}
+
+type OperationResp_OperationReturnCode int32
+
+const (
+	OperationResp_OPERATION_SUCCESS     OperationResp_OperationReturnCode = 0
+	OperationResp_OPERATION_FAILURE     OperationResp_OperationReturnCode = 1
+	OperationResp_OPERATION_UNSUPPORTED OperationResp_OperationReturnCode = 2
+)
+
+var OperationResp_OperationReturnCode_name = map[int32]string{
+	0: "OPERATION_SUCCESS",
+	1: "OPERATION_FAILURE",
+	2: "OPERATION_UNSUPPORTED",
+}
+
+var OperationResp_OperationReturnCode_value = map[string]int32{
+	"OPERATION_SUCCESS":     0,
+	"OPERATION_FAILURE":     1,
+	"OPERATION_UNSUPPORTED": 2,
+}
+
+func (x OperationResp_OperationReturnCode) String() string {
+	return proto.EnumName(OperationResp_OperationReturnCode_name, int32(x))
+}
+
+func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
+}
+
+type ValueType_Type int32
+
+const (
+	ValueType_EMPTY    ValueType_Type = 0
+	ValueType_DISTANCE ValueType_Type = 1
+)
+
+var ValueType_Type_name = map[int32]string{
+	0: "EMPTY",
+	1: "DISTANCE",
+}
+
+var ValueType_Type_value = map[string]int32{
+	"EMPTY":    0,
+	"DISTANCE": 1,
+}
+
+func (x ValueType_Type) String() string {
+	return proto.EnumName(ValueType_Type_name, int32(x))
+}
+
+func (ValueType_Type) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
+}
+
+// Convey a resource identifier
+type ID struct {
+	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ID) Reset()         { *m = ID{} }
+func (m *ID) String() string { return proto.CompactTextString(m) }
+func (*ID) ProtoMessage()    {}
+func (*ID) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{0}
+}
+
+func (m *ID) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ID.Unmarshal(m, b)
+}
+func (m *ID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ID.Marshal(b, m, deterministic)
+}
+func (m *ID) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ID.Merge(m, src)
+}
+func (m *ID) XXX_Size() int {
+	return xxx_messageInfo_ID.Size(m)
+}
+func (m *ID) XXX_DiscardUnknown() {
+	xxx_messageInfo_ID.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ID proto.InternalMessageInfo
+
+func (m *ID) GetId() string {
+	if m != nil {
+		return m.Id
+	}
+	return ""
+}
+
+// Represents a list of IDs
+type IDs struct {
+	Items                []*ID    `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *IDs) Reset()         { *m = IDs{} }
+func (m *IDs) String() string { return proto.CompactTextString(m) }
+func (*IDs) ProtoMessage()    {}
+func (*IDs) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{1}
+}
+
+func (m *IDs) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_IDs.Unmarshal(m, b)
+}
+func (m *IDs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_IDs.Marshal(b, m, deterministic)
+}
+func (m *IDs) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IDs.Merge(m, src)
+}
+func (m *IDs) XXX_Size() int {
+	return xxx_messageInfo_IDs.Size(m)
+}
+func (m *IDs) XXX_DiscardUnknown() {
+	xxx_messageInfo_IDs.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IDs proto.InternalMessageInfo
+
+func (m *IDs) GetItems() []*ID {
+	if m != nil {
+		return m.Items
+	}
+	return nil
+}
+
+type AdminState struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *AdminState) Reset()         { *m = AdminState{} }
+func (m *AdminState) String() string { return proto.CompactTextString(m) }
+func (*AdminState) ProtoMessage()    {}
+func (*AdminState) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{2}
+}
+
+func (m *AdminState) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AdminState.Unmarshal(m, b)
+}
+func (m *AdminState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AdminState.Marshal(b, m, deterministic)
+}
+func (m *AdminState) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AdminState.Merge(m, src)
+}
+func (m *AdminState) XXX_Size() int {
+	return xxx_messageInfo_AdminState.Size(m)
+}
+func (m *AdminState) XXX_DiscardUnknown() {
+	xxx_messageInfo_AdminState.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AdminState proto.InternalMessageInfo
+
+type OperStatus struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OperStatus) Reset()         { *m = OperStatus{} }
+func (m *OperStatus) String() string { return proto.CompactTextString(m) }
+func (*OperStatus) ProtoMessage()    {}
+func (*OperStatus) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{3}
+}
+
+func (m *OperStatus) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OperStatus.Unmarshal(m, b)
+}
+func (m *OperStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OperStatus.Marshal(b, m, deterministic)
+}
+func (m *OperStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OperStatus.Merge(m, src)
+}
+func (m *OperStatus) XXX_Size() int {
+	return xxx_messageInfo_OperStatus.Size(m)
+}
+func (m *OperStatus) XXX_DiscardUnknown() {
+	xxx_messageInfo_OperStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OperStatus proto.InternalMessageInfo
+
+type ConnectStatus struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ConnectStatus) Reset()         { *m = ConnectStatus{} }
+func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
+func (*ConnectStatus) ProtoMessage()    {}
+func (*ConnectStatus) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{4}
+}
+
+func (m *ConnectStatus) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ConnectStatus.Unmarshal(m, b)
+}
+func (m *ConnectStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ConnectStatus.Marshal(b, m, deterministic)
+}
+func (m *ConnectStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ConnectStatus.Merge(m, src)
+}
+func (m *ConnectStatus) XXX_Size() int {
+	return xxx_messageInfo_ConnectStatus.Size(m)
+}
+func (m *ConnectStatus) XXX_DiscardUnknown() {
+	xxx_messageInfo_ConnectStatus.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ConnectStatus proto.InternalMessageInfo
+
+type OperationResp struct {
+	// Return code
+	Code OperationResp_OperationReturnCode `protobuf:"varint,1,opt,name=code,proto3,enum=common.OperationResp_OperationReturnCode" json:"code,omitempty"`
+	// Additional Info
+	AdditionalInfo       string   `protobuf:"bytes,2,opt,name=additional_info,json=additionalInfo,proto3" json:"additional_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OperationResp) Reset()         { *m = OperationResp{} }
+func (m *OperationResp) String() string { return proto.CompactTextString(m) }
+func (*OperationResp) ProtoMessage()    {}
+func (*OperationResp) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{5}
+}
+
+func (m *OperationResp) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OperationResp.Unmarshal(m, b)
+}
+func (m *OperationResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OperationResp.Marshal(b, m, deterministic)
+}
+func (m *OperationResp) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OperationResp.Merge(m, src)
+}
+func (m *OperationResp) XXX_Size() int {
+	return xxx_messageInfo_OperationResp.Size(m)
+}
+func (m *OperationResp) XXX_DiscardUnknown() {
+	xxx_messageInfo_OperationResp.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OperationResp proto.InternalMessageInfo
+
+func (m *OperationResp) GetCode() OperationResp_OperationReturnCode {
+	if m != nil {
+		return m.Code
+	}
+	return OperationResp_OPERATION_SUCCESS
+}
+
+func (m *OperationResp) GetAdditionalInfo() string {
+	if m != nil {
+		return m.AdditionalInfo
+	}
+	return ""
+}
+
+type ValueType struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ValueType) Reset()         { *m = ValueType{} }
+func (m *ValueType) String() string { return proto.CompactTextString(m) }
+func (*ValueType) ProtoMessage()    {}
+func (*ValueType) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{6}
+}
+
+func (m *ValueType) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ValueType.Unmarshal(m, b)
+}
+func (m *ValueType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ValueType.Marshal(b, m, deterministic)
+}
+func (m *ValueType) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ValueType.Merge(m, src)
+}
+func (m *ValueType) XXX_Size() int {
+	return xxx_messageInfo_ValueType.Size(m)
+}
+func (m *ValueType) XXX_DiscardUnknown() {
+	xxx_messageInfo_ValueType.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ValueType proto.InternalMessageInfo
+
+type ValueSpecifier struct {
+	Id                   string         `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Value                ValueType_Type `protobuf:"varint,2,opt,name=value,proto3,enum=common.ValueType_Type" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *ValueSpecifier) Reset()         { *m = ValueSpecifier{} }
+func (m *ValueSpecifier) String() string { return proto.CompactTextString(m) }
+func (*ValueSpecifier) ProtoMessage()    {}
+func (*ValueSpecifier) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{7}
+}
+
+func (m *ValueSpecifier) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ValueSpecifier.Unmarshal(m, b)
+}
+func (m *ValueSpecifier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ValueSpecifier.Marshal(b, m, deterministic)
+}
+func (m *ValueSpecifier) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ValueSpecifier.Merge(m, src)
+}
+func (m *ValueSpecifier) XXX_Size() int {
+	return xxx_messageInfo_ValueSpecifier.Size(m)
+}
+func (m *ValueSpecifier) XXX_DiscardUnknown() {
+	xxx_messageInfo_ValueSpecifier.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ValueSpecifier proto.InternalMessageInfo
+
+func (m *ValueSpecifier) GetId() string {
+	if m != nil {
+		return m.Id
+	}
+	return ""
+}
+
+func (m *ValueSpecifier) GetValue() ValueType_Type {
+	if m != nil {
+		return m.Value
+	}
+	return ValueType_EMPTY
+}
+
+type ReturnValues struct {
+	Set                  uint32   `protobuf:"varint,1,opt,name=Set,proto3" json:"Set,omitempty"`
+	Unsupported          uint32   `protobuf:"varint,2,opt,name=Unsupported,proto3" json:"Unsupported,omitempty"`
+	Error                uint32   `protobuf:"varint,3,opt,name=Error,proto3" json:"Error,omitempty"`
+	Distance             uint32   `protobuf:"varint,4,opt,name=Distance,proto3" json:"Distance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ReturnValues) Reset()         { *m = ReturnValues{} }
+func (m *ReturnValues) String() string { return proto.CompactTextString(m) }
+func (*ReturnValues) ProtoMessage()    {}
+func (*ReturnValues) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{8}
+}
+
+func (m *ReturnValues) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ReturnValues.Unmarshal(m, b)
+}
+func (m *ReturnValues) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ReturnValues.Marshal(b, m, deterministic)
+}
+func (m *ReturnValues) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ReturnValues.Merge(m, src)
+}
+func (m *ReturnValues) XXX_Size() int {
+	return xxx_messageInfo_ReturnValues.Size(m)
+}
+func (m *ReturnValues) XXX_DiscardUnknown() {
+	xxx_messageInfo_ReturnValues.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ReturnValues proto.InternalMessageInfo
+
+func (m *ReturnValues) GetSet() uint32 {
+	if m != nil {
+		return m.Set
+	}
+	return 0
+}
+
+func (m *ReturnValues) GetUnsupported() uint32 {
+	if m != nil {
+		return m.Unsupported
+	}
+	return 0
+}
+
+func (m *ReturnValues) GetError() uint32 {
+	if m != nil {
+		return m.Error
+	}
+	return 0
+}
+
+func (m *ReturnValues) GetDistance() uint32 {
+	if m != nil {
+		return m.Distance
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterEnum("common.TestModeKeys", TestModeKeys_name, TestModeKeys_value)
+	proto.RegisterEnum("common.AdminState_Types", AdminState_Types_name, AdminState_Types_value)
+	proto.RegisterEnum("common.OperStatus_Types", OperStatus_Types_name, OperStatus_Types_value)
+	proto.RegisterEnum("common.ConnectStatus_Types", ConnectStatus_Types_name, ConnectStatus_Types_value)
+	proto.RegisterEnum("common.OperationResp_OperationReturnCode", OperationResp_OperationReturnCode_name, OperationResp_OperationReturnCode_value)
+	proto.RegisterEnum("common.ValueType_Type", ValueType_Type_name, ValueType_Type_value)
+	proto.RegisterType((*ID)(nil), "common.ID")
+	proto.RegisterType((*IDs)(nil), "common.IDs")
+	proto.RegisterType((*AdminState)(nil), "common.AdminState")
+	proto.RegisterType((*OperStatus)(nil), "common.OperStatus")
+	proto.RegisterType((*ConnectStatus)(nil), "common.ConnectStatus")
+	proto.RegisterType((*OperationResp)(nil), "common.OperationResp")
+	proto.RegisterType((*ValueType)(nil), "common.ValueType")
+	proto.RegisterType((*ValueSpecifier)(nil), "common.ValueSpecifier")
+	proto.RegisterType((*ReturnValues)(nil), "common.ReturnValues")
+}
+
+func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
+
+var fileDescriptor_c2e3fd231961e826 = []byte{
+	// 606 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x4d, 0x4f, 0xdb, 0x4a,
+	0x14, 0x8d, 0x9d, 0x8f, 0x47, 0x6e, 0x88, 0xf1, 0x1b, 0xe0, 0x29, 0x0f, 0x55, 0x6a, 0xe4, 0x0d,
+	0xb4, 0xa2, 0x89, 0x04, 0xdd, 0x76, 0x61, 0xec, 0x29, 0x1d, 0x11, 0xc6, 0xd1, 0xd8, 0x0e, 0xa2,
+	0x8b, 0x46, 0x26, 0x1e, 0x82, 0x25, 0xe2, 0xb1, 0xec, 0x09, 0x12, 0xbf, 0xb4, 0x7f, 0xa7, 0x9a,
+	0x71, 0xf8, 0xaa, 0xd8, 0x24, 0x3e, 0xf7, 0xdc, 0xb9, 0xc7, 0xe7, 0x8c, 0x2f, 0x1c, 0x3c, 0x88,
+	0x7b, 0x79, 0x97, 0xcc, 0x8b, 0x52, 0x48, 0x51, 0x8d, 0x17, 0x62, 0xb5, 0x12, 0xf9, 0x48, 0x23,
+	0xd4, 0xa9, 0x91, 0xb3, 0x07, 0x26, 0xf1, 0x91, 0x05, 0x66, 0x96, 0x0e, 0x8c, 0xa1, 0x71, 0xd4,
+	0x65, 0x66, 0x96, 0x3a, 0x87, 0xd0, 0x24, 0x7e, 0x85, 0x86, 0xd0, 0xce, 0x24, 0x5f, 0x55, 0x03,
+	0x63, 0xd8, 0x3c, 0xea, 0x9d, 0xc0, 0x68, 0x33, 0x82, 0xf8, 0xac, 0x26, 0x9c, 0x35, 0x80, 0x9b,
+	0xae, 0xb2, 0x3c, 0x94, 0x89, 0xe4, 0xce, 0x12, 0xda, 0xd1, 0x63, 0xc1, 0x2b, 0xd4, 0x83, 0x7f,
+	0x62, 0x7a, 0x41, 0x83, 0x2b, 0x6a, 0x37, 0x10, 0x02, 0x6b, 0xca, 0xf0, 0x94, 0x05, 0x33, 0x12,
+	0x92, 0x80, 0x62, 0xdf, 0x36, 0x54, 0x03, 0xa6, 0xee, 0xd9, 0x04, 0xfb, 0xb6, 0x89, 0xb6, 0x61,
+	0xcb, 0x27, 0x61, 0x8d, 0x9a, 0x68, 0x1f, 0xfe, 0xf5, 0x83, 0x2b, 0x3a, 0x09, 0x5c, 0x9f, 0xd0,
+	0xf3, 0x39, 0xb9, 0x74, 0xcf, 0xb1, 0xdd, 0x52, 0x27, 0x7c, 0x3c, 0xc1, 0x11, 0xf6, 0xed, 0xb6,
+	0xb3, 0x04, 0x08, 0x0a, 0x5e, 0x2a, 0xd5, 0x75, 0xe5, 0x5c, 0xbf, 0x2b, 0x6b, 0x01, 0xf8, 0x24,
+	0xf4, 0x82, 0x19, 0x66, 0x5a, 0xd2, 0x02, 0x70, 0xbd, 0x88, 0xcc, 0xdc, 0x88, 0xd0, 0x73, 0xdb,
+	0x54, 0xcd, 0x11, 0x0e, 0x35, 0x68, 0x22, 0x80, 0x8e, 0x26, 0x95, 0x12, 0x40, 0xe7, 0xbb, 0x4b,
+	0x26, 0x5a, 0x08, 0x43, 0xdf, 0x13, 0x79, 0xce, 0x17, 0x72, 0xa3, 0xf5, 0xf5, 0x5d, 0xad, 0x1d,
+	0xe8, 0xc5, 0x94, 0x61, 0xd7, 0xfb, 0xa1, 0x5c, 0xd8, 0x06, 0xea, 0x43, 0xf7, 0x05, 0x9a, 0xce,
+	0x6f, 0x03, 0xfa, 0xea, 0x85, 0x13, 0x99, 0x89, 0x9c, 0xf1, 0xaa, 0x40, 0xdf, 0xa0, 0xb5, 0x10,
+	0x29, 0xd7, 0x99, 0x5b, 0x27, 0x9f, 0x9e, 0x92, 0x7d, 0xd3, 0xf4, 0x1a, 0xc9, 0x75, 0x99, 0x7b,
+	0x22, 0xe5, 0x4c, 0x1f, 0x43, 0x87, 0xb0, 0x93, 0xa4, 0x69, 0xa6, 0xb8, 0xe4, 0x7e, 0x9e, 0xe5,
+	0xb7, 0x62, 0x60, 0xea, 0xdb, 0xb3, 0x5e, 0xca, 0x24, 0xbf, 0x15, 0xce, 0x2f, 0xd8, 0x7d, 0x67,
+	0x8a, 0x0a, 0x39, 0x98, 0x62, 0xe6, 0x46, 0x24, 0xa0, 0xf3, 0x30, 0xf6, 0x3c, 0x1c, 0x86, 0x76,
+	0xe3, 0x6d, 0x59, 0x85, 0x10, 0x33, 0xe5, 0xe6, 0x7f, 0xd8, 0x7f, 0x29, 0xc7, 0x34, 0x8c, 0xa7,
+	0xd3, 0x80, 0xa9, 0x9b, 0x30, 0x9d, 0x63, 0xe8, 0xce, 0x92, 0xfb, 0x35, 0x57, 0xa1, 0x38, 0x1f,
+	0xa1, 0xa5, 0xfe, 0x51, 0x17, 0xda, 0xf8, 0x72, 0x1a, 0x5d, 0xdb, 0x8d, 0xcd, 0xdd, 0x46, 0x2e,
+	0xf5, 0xb0, 0x6d, 0x38, 0x14, 0x2c, 0xdd, 0x1d, 0x16, 0x7c, 0x91, 0xdd, 0x66, 0xbc, 0xfc, 0xfb,
+	0xcb, 0x43, 0xc7, 0xd0, 0x7e, 0x50, 0x1d, 0xda, 0x8e, 0x75, 0xf2, 0xdf, 0x53, 0x30, 0xcf, 0x22,
+	0x23, 0xf5, 0xc3, 0xea, 0x26, 0x47, 0xc2, 0x76, 0x6d, 0x4a, 0xd3, 0x15, 0xb2, 0xa1, 0x19, 0x72,
+	0xa9, 0xc7, 0xf5, 0x99, 0x7a, 0x44, 0x43, 0xe8, 0xc5, 0x79, 0xb5, 0x2e, 0x0a, 0x51, 0x4a, 0x9e,
+	0xea, 0xa9, 0x7d, 0xf6, 0xba, 0x84, 0xf6, 0xa0, 0x8d, 0xcb, 0x52, 0x94, 0x83, 0xa6, 0xe6, 0x6a,
+	0x80, 0x0e, 0x60, 0xcb, 0xcf, 0x2a, 0x99, 0xe4, 0x0b, 0x3e, 0x68, 0x69, 0xe2, 0x19, 0x7f, 0xfe,
+	0x00, 0xdb, 0x11, 0xaf, 0xe4, 0xa5, 0x48, 0xf9, 0x05, 0x7f, 0xac, 0x94, 0xc7, 0xa4, 0xc8, 0xe6,
+	0x92, 0x57, 0xd2, 0x6e, 0x9c, 0x61, 0xd8, 0x15, 0xe5, 0x72, 0x24, 0x0a, 0x9e, 0x2f, 0x44, 0x99,
+	0x8e, 0xea, 0x25, 0xfc, 0x39, 0x5a, 0x66, 0xf2, 0x6e, 0x7d, 0xa3, 0xfc, 0x8c, 0x9f, 0xb8, 0x71,
+	0xcd, 0x7d, 0xd9, 0x2c, 0xe8, 0xc3, 0xe9, 0x78, 0x29, 0x36, 0x6b, 0x7a, 0xd3, 0xd1, 0xc5, 0xd3,
+	0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x2a, 0xdd, 0x48, 0xc5, 0x03, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go
new file mode 100644
index 0000000..8fbd621
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go
@@ -0,0 +1,142 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/meta.proto
+
+package common
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	descriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type Access int32
+
+const (
+	// read-write, stored attribute
+	Access_CONFIG Access = 0
+	// read-only field, stored with the model, covered by its hash
+	Access_READ_ONLY Access = 1
+	// A read-only attribute that is not stored in the model, not covered
+	// by its hash, its value is filled real-time upon each request.
+	Access_REAL_TIME Access = 2
+)
+
+var Access_name = map[int32]string{
+	0: "CONFIG",
+	1: "READ_ONLY",
+	2: "REAL_TIME",
+}
+
+var Access_value = map[string]int32{
+	"CONFIG":    0,
+	"READ_ONLY": 1,
+	"REAL_TIME": 2,
+}
+
+func (x Access) String() string {
+	return proto.EnumName(Access_name, int32(x))
+}
+
+func (Access) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_96b320e8a67781f3, []int{0}
+}
+
+type ChildNode struct {
+	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ChildNode) Reset()         { *m = ChildNode{} }
+func (m *ChildNode) String() string { return proto.CompactTextString(m) }
+func (*ChildNode) ProtoMessage()    {}
+func (*ChildNode) Descriptor() ([]byte, []int) {
+	return fileDescriptor_96b320e8a67781f3, []int{0}
+}
+
+func (m *ChildNode) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ChildNode.Unmarshal(m, b)
+}
+func (m *ChildNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ChildNode.Marshal(b, m, deterministic)
+}
+func (m *ChildNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ChildNode.Merge(m, src)
+}
+func (m *ChildNode) XXX_Size() int {
+	return xxx_messageInfo_ChildNode.Size(m)
+}
+func (m *ChildNode) XXX_DiscardUnknown() {
+	xxx_messageInfo_ChildNode.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ChildNode proto.InternalMessageInfo
+
+func (m *ChildNode) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
+}
+
+var E_ChildNode = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.FieldOptions)(nil),
+	ExtensionType: (*ChildNode)(nil),
+	Field:         7761772,
+	Name:          "voltha.child_node",
+	Tag:           "bytes,7761772,opt,name=child_node",
+	Filename:      "voltha_protos/meta.proto",
+}
+
+var E_Access = &proto.ExtensionDesc{
+	ExtendedType:  (*descriptor.FieldOptions)(nil),
+	ExtensionType: (*Access)(nil),
+	Field:         7761773,
+	Name:          "voltha.access",
+	Tag:           "varint,7761773,opt,name=access,enum=voltha.Access",
+	Filename:      "voltha_protos/meta.proto",
+}
+
+func init() {
+	proto.RegisterEnum("voltha.Access", Access_name, Access_value)
+	proto.RegisterType((*ChildNode)(nil), "voltha.ChildNode")
+	proto.RegisterExtension(E_ChildNode)
+	proto.RegisterExtension(E_Access)
+}
+
+func init() { proto.RegisterFile("voltha_protos/meta.proto", fileDescriptor_96b320e8a67781f3) }
+
+var fileDescriptor_96b320e8a67781f3 = []byte{
+	// 281 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xc1, 0x4a, 0xc3, 0x40,
+	0x10, 0x86, 0x8d, 0x85, 0x40, 0x46, 0x2c, 0x31, 0xa7, 0x52, 0x28, 0x04, 0x4f, 0x45, 0x70, 0x17,
+	0xd2, 0x5b, 0x6f, 0xb5, 0xb6, 0x5a, 0x88, 0x09, 0x04, 0x2f, 0x7a, 0x09, 0xc9, 0x66, 0x4d, 0x82,
+	0x49, 0x26, 0x64, 0xb7, 0x05, 0x1f, 0xd5, 0x8b, 0x4f, 0xa0, 0xef, 0x20, 0xc9, 0x66, 0xbd, 0x7a,
+	0xfb, 0x67, 0xf6, 0xdf, 0x8f, 0x8f, 0x81, 0xd9, 0x09, 0x2b, 0x59, 0x24, 0x71, 0xdb, 0xa1, 0x44,
+	0x41, 0x6b, 0x2e, 0x13, 0x32, 0x64, 0xc7, 0x54, 0x2f, 0x73, 0x37, 0x47, 0xcc, 0x2b, 0x4e, 0x87,
+	0x6d, 0x7a, 0x7c, 0xa3, 0x19, 0x17, 0xac, 0x2b, 0x5b, 0x89, 0x9d, 0x6a, 0x5e, 0x2f, 0xc0, 0xda,
+	0x16, 0x65, 0x95, 0x05, 0x98, 0x71, 0xc7, 0x86, 0xc9, 0x3b, 0xff, 0x98, 0x19, 0xae, 0xb1, 0xb4,
+	0xa2, 0x3e, 0xde, 0x78, 0x60, 0x6e, 0x18, 0xe3, 0x42, 0x38, 0x00, 0xe6, 0x36, 0x0c, 0xf6, 0x87,
+	0x07, 0xfb, 0xcc, 0xb9, 0x04, 0x2b, 0xda, 0x6d, 0xee, 0xe3, 0x30, 0xf0, 0x5f, 0x6c, 0x63, 0x1c,
+	0xfd, 0xf8, 0xf9, 0xf0, 0xb4, 0xb3, 0xcf, 0xd7, 0x11, 0x00, 0xeb, 0x91, 0x71, 0xd3, 0x33, 0x17,
+	0x44, 0x39, 0x10, 0xed, 0x40, 0xf6, 0x25, 0xaf, 0xb2, 0xb0, 0x95, 0x25, 0x36, 0x62, 0xf6, 0xfd,
+	0xf5, 0x39, 0x71, 0x8d, 0xe5, 0x85, 0x77, 0x45, 0x94, 0x33, 0xf9, 0xd3, 0x89, 0x2c, 0xa6, 0xe3,
+	0xfa, 0x11, 0xcc, 0x44, 0x79, 0xfc, 0xc3, 0xfb, 0x51, 0xbc, 0xa9, 0x37, 0xd5, 0x3c, 0xe5, 0x1f,
+	0x8d, 0xff, 0xef, 0x7c, 0x98, 0x63, 0x97, 0x13, 0x6c, 0x79, 0xc3, 0xb0, 0xcb, 0x74, 0x8b, 0x61,
+	0x5d, 0x63, 0xf3, 0x4a, 0xf2, 0x52, 0x16, 0xc7, 0xb4, 0x1f, 0xa9, 0xae, 0x50, 0x55, 0xb9, 0x1d,
+	0xcf, 0x7c, 0x5a, 0xd1, 0x1c, 0xa9, 0xea, 0xa7, 0xe6, 0xb0, 0x5c, 0xfd, 0x06, 0x00, 0x00, 0xff,
+	0xff, 0x45, 0x61, 0x57, 0xbf, 0x8b, 0x01, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/ext/config/ext_config.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/ext/config/ext_config.pb.go
new file mode 100644
index 0000000..4f68fd0
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/ext/config/ext_config.pb.go
@@ -0,0 +1,523 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/ext_config.proto
+
+package config
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type OnuItuPonAlarm_AlarmID int32
+
+const (
+	OnuItuPonAlarm_RDI_ERRORS OnuItuPonAlarm_AlarmID = 0
+)
+
+var OnuItuPonAlarm_AlarmID_name = map[int32]string{
+	0: "RDI_ERRORS",
+}
+
+var OnuItuPonAlarm_AlarmID_value = map[string]int32{
+	"RDI_ERRORS": 0,
+}
+
+func (x OnuItuPonAlarm_AlarmID) String() string {
+	return proto.EnumName(OnuItuPonAlarm_AlarmID_name, int32(x))
+}
+
+func (OnuItuPonAlarm_AlarmID) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 0}
+}
+
+type OnuItuPonAlarm_AlarmReportingCondition int32
+
+const (
+	OnuItuPonAlarm_RATE_THRESHOLD  OnuItuPonAlarm_AlarmReportingCondition = 0
+	OnuItuPonAlarm_RATE_RANGE      OnuItuPonAlarm_AlarmReportingCondition = 1
+	OnuItuPonAlarm_VALUE_THRESHOLD OnuItuPonAlarm_AlarmReportingCondition = 2
+)
+
+var OnuItuPonAlarm_AlarmReportingCondition_name = map[int32]string{
+	0: "RATE_THRESHOLD",
+	1: "RATE_RANGE",
+	2: "VALUE_THRESHOLD",
+}
+
+var OnuItuPonAlarm_AlarmReportingCondition_value = map[string]int32{
+	"RATE_THRESHOLD":  0,
+	"RATE_RANGE":      1,
+	"VALUE_THRESHOLD": 2,
+}
+
+func (x OnuItuPonAlarm_AlarmReportingCondition) String() string {
+	return proto.EnumName(OnuItuPonAlarm_AlarmReportingCondition_name, int32(x))
+}
+
+func (OnuItuPonAlarm_AlarmReportingCondition) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 1}
+}
+
+type AlarmConfig struct {
+	// Types that are valid to be assigned to Config:
+	//	*AlarmConfig_OnuItuPonAlarmConfig
+	Config               isAlarmConfig_Config `protobuf_oneof:"config"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *AlarmConfig) Reset()         { *m = AlarmConfig{} }
+func (m *AlarmConfig) String() string { return proto.CompactTextString(m) }
+func (*AlarmConfig) ProtoMessage()    {}
+func (*AlarmConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{0}
+}
+
+func (m *AlarmConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AlarmConfig.Unmarshal(m, b)
+}
+func (m *AlarmConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AlarmConfig.Marshal(b, m, deterministic)
+}
+func (m *AlarmConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmConfig.Merge(m, src)
+}
+func (m *AlarmConfig) XXX_Size() int {
+	return xxx_messageInfo_AlarmConfig.Size(m)
+}
+func (m *AlarmConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_AlarmConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmConfig proto.InternalMessageInfo
+
+type isAlarmConfig_Config interface {
+	isAlarmConfig_Config()
+}
+
+type AlarmConfig_OnuItuPonAlarmConfig struct {
+	OnuItuPonAlarmConfig *OnuItuPonAlarm `protobuf:"bytes,1,opt,name=onu_itu_pon_alarm_config,json=onuItuPonAlarmConfig,proto3,oneof"`
+}
+
+func (*AlarmConfig_OnuItuPonAlarmConfig) isAlarmConfig_Config() {}
+
+func (m *AlarmConfig) GetConfig() isAlarmConfig_Config {
+	if m != nil {
+		return m.Config
+	}
+	return nil
+}
+
+func (m *AlarmConfig) GetOnuItuPonAlarmConfig() *OnuItuPonAlarm {
+	if x, ok := m.GetConfig().(*AlarmConfig_OnuItuPonAlarmConfig); ok {
+		return x.OnuItuPonAlarmConfig
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*AlarmConfig) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*AlarmConfig_OnuItuPonAlarmConfig)(nil),
+	}
+}
+
+type OnuItuPonAlarm struct {
+	PonNi                   uint32                                 `protobuf:"fixed32,1,opt,name=pon_ni,json=ponNi,proto3" json:"pon_ni,omitempty"`
+	OnuId                   uint32                                 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	AlarmId                 OnuItuPonAlarm_AlarmID                 `protobuf:"varint,3,opt,name=alarm_id,json=alarmId,proto3,enum=config.OnuItuPonAlarm_AlarmID" json:"alarm_id,omitempty"`
+	AlarmReportingCondition OnuItuPonAlarm_AlarmReportingCondition `protobuf:"varint,4,opt,name=alarm_reporting_condition,json=alarmReportingCondition,proto3,enum=config.OnuItuPonAlarm_AlarmReportingCondition" json:"alarm_reporting_condition,omitempty"`
+	// Types that are valid to be assigned to Config:
+	//	*OnuItuPonAlarm_RateThresholdConfig_
+	//	*OnuItuPonAlarm_RateRangeConfig_
+	//	*OnuItuPonAlarm_ValueThresholdConfig_
+	Config               isOnuItuPonAlarm_Config `protobuf_oneof:"config"`
+	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
+	XXX_unrecognized     []byte                  `json:"-"`
+	XXX_sizecache        int32                   `json:"-"`
+}
+
+func (m *OnuItuPonAlarm) Reset()         { *m = OnuItuPonAlarm{} }
+func (m *OnuItuPonAlarm) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm) ProtoMessage()    {}
+func (*OnuItuPonAlarm) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1}
+}
+
+func (m *OnuItuPonAlarm) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm.Merge(m, src)
+}
+func (m *OnuItuPonAlarm) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm.Size(m)
+}
+func (m *OnuItuPonAlarm) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm) GetPonNi() uint32 {
+	if m != nil {
+		return m.PonNi
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm) GetAlarmId() OnuItuPonAlarm_AlarmID {
+	if m != nil {
+		return m.AlarmId
+	}
+	return OnuItuPonAlarm_RDI_ERRORS
+}
+
+func (m *OnuItuPonAlarm) GetAlarmReportingCondition() OnuItuPonAlarm_AlarmReportingCondition {
+	if m != nil {
+		return m.AlarmReportingCondition
+	}
+	return OnuItuPonAlarm_RATE_THRESHOLD
+}
+
+type isOnuItuPonAlarm_Config interface {
+	isOnuItuPonAlarm_Config()
+}
+
+type OnuItuPonAlarm_RateThresholdConfig_ struct {
+	RateThresholdConfig *OnuItuPonAlarm_RateThresholdConfig `protobuf:"bytes,5,opt,name=rate_threshold_config,json=rateThresholdConfig,proto3,oneof"`
+}
+
+type OnuItuPonAlarm_RateRangeConfig_ struct {
+	RateRangeConfig *OnuItuPonAlarm_RateRangeConfig `protobuf:"bytes,6,opt,name=rate_range_config,json=rateRangeConfig,proto3,oneof"`
+}
+
+type OnuItuPonAlarm_ValueThresholdConfig_ struct {
+	ValueThresholdConfig *OnuItuPonAlarm_ValueThresholdConfig `protobuf:"bytes,7,opt,name=value_threshold_config,json=valueThresholdConfig,proto3,oneof"`
+}
+
+func (*OnuItuPonAlarm_RateThresholdConfig_) isOnuItuPonAlarm_Config() {}
+
+func (*OnuItuPonAlarm_RateRangeConfig_) isOnuItuPonAlarm_Config() {}
+
+func (*OnuItuPonAlarm_ValueThresholdConfig_) isOnuItuPonAlarm_Config() {}
+
+func (m *OnuItuPonAlarm) GetConfig() isOnuItuPonAlarm_Config {
+	if m != nil {
+		return m.Config
+	}
+	return nil
+}
+
+func (m *OnuItuPonAlarm) GetRateThresholdConfig() *OnuItuPonAlarm_RateThresholdConfig {
+	if x, ok := m.GetConfig().(*OnuItuPonAlarm_RateThresholdConfig_); ok {
+		return x.RateThresholdConfig
+	}
+	return nil
+}
+
+func (m *OnuItuPonAlarm) GetRateRangeConfig() *OnuItuPonAlarm_RateRangeConfig {
+	if x, ok := m.GetConfig().(*OnuItuPonAlarm_RateRangeConfig_); ok {
+		return x.RateRangeConfig
+	}
+	return nil
+}
+
+func (m *OnuItuPonAlarm) GetValueThresholdConfig() *OnuItuPonAlarm_ValueThresholdConfig {
+	if x, ok := m.GetConfig().(*OnuItuPonAlarm_ValueThresholdConfig_); ok {
+		return x.ValueThresholdConfig
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OnuItuPonAlarm) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*OnuItuPonAlarm_RateThresholdConfig_)(nil),
+		(*OnuItuPonAlarm_RateRangeConfig_)(nil),
+		(*OnuItuPonAlarm_ValueThresholdConfig_)(nil),
+	}
+}
+
+type OnuItuPonAlarm_SoakTime struct {
+	ActiveSoakTime       uint32   `protobuf:"fixed32,1,opt,name=active_soak_time,json=activeSoakTime,proto3" json:"active_soak_time,omitempty"`
+	ClearSoakTime        uint32   `protobuf:"fixed32,2,opt,name=clear_soak_time,json=clearSoakTime,proto3" json:"clear_soak_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuItuPonAlarm_SoakTime) Reset()         { *m = OnuItuPonAlarm_SoakTime{} }
+func (m *OnuItuPonAlarm_SoakTime) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm_SoakTime) ProtoMessage()    {}
+func (*OnuItuPonAlarm_SoakTime) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 0}
+}
+
+func (m *OnuItuPonAlarm_SoakTime) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm_SoakTime.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm_SoakTime) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm_SoakTime.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm_SoakTime) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm_SoakTime.Merge(m, src)
+}
+func (m *OnuItuPonAlarm_SoakTime) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm_SoakTime.Size(m)
+}
+func (m *OnuItuPonAlarm_SoakTime) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm_SoakTime.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm_SoakTime proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm_SoakTime) GetActiveSoakTime() uint32 {
+	if m != nil {
+		return m.ActiveSoakTime
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_SoakTime) GetClearSoakTime() uint32 {
+	if m != nil {
+		return m.ClearSoakTime
+	}
+	return 0
+}
+
+type OnuItuPonAlarm_RateThresholdConfig struct {
+	RateThresholdRising  uint64                   `protobuf:"fixed64,1,opt,name=rate_threshold_rising,json=rateThresholdRising,proto3" json:"rate_threshold_rising,omitempty"`
+	RateThresholdFalling uint64                   `protobuf:"fixed64,2,opt,name=rate_threshold_falling,json=rateThresholdFalling,proto3" json:"rate_threshold_falling,omitempty"`
+	SoakTime             *OnuItuPonAlarm_SoakTime `protobuf:"bytes,3,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) Reset()         { *m = OnuItuPonAlarm_RateThresholdConfig{} }
+func (m *OnuItuPonAlarm_RateThresholdConfig) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm_RateThresholdConfig) ProtoMessage()    {}
+func (*OnuItuPonAlarm_RateThresholdConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 1}
+}
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Merge(m, src)
+}
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.Size(m)
+}
+func (m *OnuItuPonAlarm_RateThresholdConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm_RateThresholdConfig proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdRising() uint64 {
+	if m != nil {
+		return m.RateThresholdRising
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) GetRateThresholdFalling() uint64 {
+	if m != nil {
+		return m.RateThresholdFalling
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_RateThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if m != nil {
+		return m.SoakTime
+	}
+	return nil
+}
+
+type OnuItuPonAlarm_RateRangeConfig struct {
+	RateRangeLower       uint64                   `protobuf:"fixed64,1,opt,name=rate_range_lower,json=rateRangeLower,proto3" json:"rate_range_lower,omitempty"`
+	RateRangeUpper       uint64                   `protobuf:"fixed64,2,opt,name=rate_range_upper,json=rateRangeUpper,proto3" json:"rate_range_upper,omitempty"`
+	SoakTime             *OnuItuPonAlarm_SoakTime `protobuf:"bytes,3,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *OnuItuPonAlarm_RateRangeConfig) Reset()         { *m = OnuItuPonAlarm_RateRangeConfig{} }
+func (m *OnuItuPonAlarm_RateRangeConfig) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm_RateRangeConfig) ProtoMessage()    {}
+func (*OnuItuPonAlarm_RateRangeConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 2}
+}
+
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Merge(m, src)
+}
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.Size(m)
+}
+func (m *OnuItuPonAlarm_RateRangeConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm_RateRangeConfig proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm_RateRangeConfig) GetRateRangeLower() uint64 {
+	if m != nil {
+		return m.RateRangeLower
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_RateRangeConfig) GetRateRangeUpper() uint64 {
+	if m != nil {
+		return m.RateRangeUpper
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_RateRangeConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if m != nil {
+		return m.SoakTime
+	}
+	return nil
+}
+
+type OnuItuPonAlarm_ValueThresholdConfig struct {
+	ThresholdLimit       uint64                   `protobuf:"fixed64,1,opt,name=threshold_limit,json=thresholdLimit,proto3" json:"threshold_limit,omitempty"`
+	SoakTime             *OnuItuPonAlarm_SoakTime `protobuf:"bytes,2,opt,name=soak_time,json=soakTime,proto3" json:"soak_time,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *OnuItuPonAlarm_ValueThresholdConfig) Reset()         { *m = OnuItuPonAlarm_ValueThresholdConfig{} }
+func (m *OnuItuPonAlarm_ValueThresholdConfig) String() string { return proto.CompactTextString(m) }
+func (*OnuItuPonAlarm_ValueThresholdConfig) ProtoMessage()    {}
+func (*OnuItuPonAlarm_ValueThresholdConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fb43b44b7fa3aba9, []int{1, 3}
+}
+
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Unmarshal(m, b)
+}
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Marshal(b, m, deterministic)
+}
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Merge(m, src)
+}
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_Size() int {
+	return xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.Size(m)
+}
+func (m *OnuItuPonAlarm_ValueThresholdConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuItuPonAlarm_ValueThresholdConfig proto.InternalMessageInfo
+
+func (m *OnuItuPonAlarm_ValueThresholdConfig) GetThresholdLimit() uint64 {
+	if m != nil {
+		return m.ThresholdLimit
+	}
+	return 0
+}
+
+func (m *OnuItuPonAlarm_ValueThresholdConfig) GetSoakTime() *OnuItuPonAlarm_SoakTime {
+	if m != nil {
+		return m.SoakTime
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("config.OnuItuPonAlarm_AlarmID", OnuItuPonAlarm_AlarmID_name, OnuItuPonAlarm_AlarmID_value)
+	proto.RegisterEnum("config.OnuItuPonAlarm_AlarmReportingCondition", OnuItuPonAlarm_AlarmReportingCondition_name, OnuItuPonAlarm_AlarmReportingCondition_value)
+	proto.RegisterType((*AlarmConfig)(nil), "config.AlarmConfig")
+	proto.RegisterType((*OnuItuPonAlarm)(nil), "config.OnuItuPonAlarm")
+	proto.RegisterType((*OnuItuPonAlarm_SoakTime)(nil), "config.OnuItuPonAlarm.SoakTime")
+	proto.RegisterType((*OnuItuPonAlarm_RateThresholdConfig)(nil), "config.OnuItuPonAlarm.RateThresholdConfig")
+	proto.RegisterType((*OnuItuPonAlarm_RateRangeConfig)(nil), "config.OnuItuPonAlarm.RateRangeConfig")
+	proto.RegisterType((*OnuItuPonAlarm_ValueThresholdConfig)(nil), "config.OnuItuPonAlarm.ValueThresholdConfig")
+}
+
+func init() { proto.RegisterFile("voltha_protos/ext_config.proto", fileDescriptor_fb43b44b7fa3aba9) }
+
+var fileDescriptor_fb43b44b7fa3aba9 = []byte{
+	// 609 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xd1, 0x4e, 0x1a, 0x41,
+	0x14, 0x05, 0xac, 0x80, 0xd7, 0x14, 0xe8, 0x80, 0x8a, 0x3e, 0x58, 0xe3, 0x83, 0x35, 0x6d, 0xba,
+	0x24, 0xd8, 0x97, 0x26, 0x7d, 0x41, 0xa5, 0x85, 0x84, 0xa8, 0x19, 0xd1, 0x87, 0xa6, 0xc9, 0x76,
+	0x64, 0xc7, 0x65, 0xea, 0x32, 0xb3, 0x19, 0x66, 0x69, 0x5f, 0xfa, 0x35, 0xfd, 0x8e, 0xf6, 0xdb,
+	0x9a, 0x99, 0xd9, 0x05, 0x81, 0xc5, 0xa4, 0xe9, 0x0b, 0xc9, 0x9e, 0x7b, 0xcf, 0xb9, 0x87, 0x73,
+	0x67, 0x06, 0xf6, 0x27, 0x22, 0x50, 0x43, 0xe2, 0x86, 0x52, 0x28, 0x31, 0x6e, 0xd0, 0x1f, 0xca,
+	0x1d, 0x08, 0x7e, 0xcf, 0x7c, 0xc7, 0x20, 0x28, 0x6f, 0xbf, 0x0e, 0x19, 0x6c, 0xb6, 0x02, 0x22,
+	0x47, 0x67, 0xe6, 0x13, 0x5d, 0x41, 0x5d, 0xf0, 0xc8, 0x65, 0x2a, 0x72, 0x43, 0xc1, 0x5d, 0xa2,
+	0x4b, 0x31, 0xb1, 0x9e, 0x3d, 0xc8, 0x1e, 0x6f, 0x36, 0xb7, 0x9d, 0x58, 0xe7, 0x92, 0x47, 0x5d,
+	0x15, 0x5d, 0x09, 0x6e, 0xf8, 0x9d, 0x0c, 0xae, 0x89, 0x39, 0xc4, 0x2a, 0x9e, 0x16, 0x21, 0x19,
+	0xf5, 0x67, 0x03, 0x4a, 0xf3, 0x24, 0xb4, 0x05, 0x79, 0x3d, 0x86, 0x33, 0x23, 0x5e, 0xc0, 0xeb,
+	0xa1, 0xe0, 0x17, 0x4c, 0xc3, 0xc6, 0x85, 0x57, 0xcf, 0x59, 0x58, 0x2b, 0x7b, 0xe8, 0x3d, 0x14,
+	0xad, 0x21, 0xe6, 0xd5, 0xd7, 0x0e, 0xb2, 0xc7, 0xa5, 0xe6, 0x7e, 0xba, 0x19, 0xc7, 0xfc, 0x76,
+	0xcf, 0x71, 0xc1, 0xf4, 0x77, 0x3d, 0xf4, 0x0d, 0x76, 0x2d, 0x55, 0xd2, 0x50, 0x48, 0xc5, 0xb8,
+	0xaf, 0xff, 0x95, 0xc7, 0x14, 0x13, 0xbc, 0xfe, 0xcc, 0x68, 0x39, 0x4f, 0x69, 0xe1, 0x84, 0x76,
+	0x96, 0xb0, 0xf0, 0x0e, 0x49, 0x2f, 0xa0, 0xaf, 0xb0, 0x25, 0x89, 0xa2, 0xae, 0x1a, 0x4a, 0x3a,
+	0x1e, 0x8a, 0xc0, 0x4b, 0x02, 0x5c, 0x37, 0x01, 0xbe, 0x5e, 0x31, 0x07, 0x13, 0x45, 0xfb, 0x09,
+	0xc5, 0x86, 0xd7, 0xc9, 0xe0, 0xaa, 0x5c, 0x86, 0x51, 0x1f, 0x5e, 0x98, 0x09, 0x92, 0x70, 0x9f,
+	0x26, 0xea, 0x79, 0xa3, 0x7e, 0xf4, 0x84, 0x3a, 0xd6, 0xed, 0x53, 0xe5, 0xb2, 0x9c, 0x87, 0xd0,
+	0x00, 0xb6, 0x27, 0x24, 0x88, 0x52, 0x8c, 0x17, 0x8c, 0xf4, 0x9b, 0x15, 0xd2, 0xb7, 0x9a, 0xb4,
+	0xec, 0xbc, 0x36, 0x49, 0xc1, 0xf7, 0xbe, 0x40, 0xf1, 0x5a, 0x90, 0x87, 0x3e, 0x1b, 0x51, 0x74,
+	0x0c, 0x15, 0x32, 0x50, 0x6c, 0x42, 0xdd, 0xb1, 0x20, 0x0f, 0xae, 0x62, 0x23, 0x1a, 0x9f, 0x83,
+	0x92, 0xc5, 0xa7, 0x9d, 0x47, 0x50, 0x1e, 0x04, 0x94, 0xc8, 0x47, 0x8d, 0xf6, 0x64, 0x3c, 0x37,
+	0x70, 0xd2, 0xb7, 0xf7, 0x3b, 0x0b, 0xd5, 0x94, 0x1c, 0x51, 0x73, 0x69, 0x25, 0x92, 0x8d, 0x19,
+	0xb7, 0x67, 0x3a, 0xbf, 0x10, 0x32, 0x36, 0x25, 0xf4, 0x0e, 0xb6, 0x17, 0x38, 0xf7, 0x24, 0x08,
+	0x34, 0x29, 0x67, 0x48, 0xb5, 0x39, 0xd2, 0x47, 0x5b, 0x43, 0x1f, 0x60, 0x63, 0xe6, 0x71, 0xcd,
+	0xe4, 0xf6, 0x72, 0x45, 0x6e, 0x89, 0x6b, 0x5c, 0x1c, 0x27, 0xfe, 0x7f, 0x65, 0xa1, 0xbc, 0xb0,
+	0x29, 0x9d, 0xd2, 0xa3, 0x65, 0x07, 0xe2, 0x3b, 0x95, 0xb1, 0xed, 0xd2, 0x74, 0x83, 0x3d, 0x8d,
+	0x2e, 0x74, 0x46, 0x61, 0x48, 0x65, 0xec, 0x75, 0xd6, 0x79, 0xa3, 0xd1, 0xff, 0x74, 0xf9, 0x13,
+	0x6a, 0x69, 0x3b, 0x47, 0xaf, 0xa0, 0x3c, 0x0b, 0x2b, 0x60, 0x23, 0xa6, 0x12, 0xa3, 0x53, 0xb8,
+	0xa7, 0xd1, 0xf9, 0xf1, 0xb9, 0x7f, 0x1c, 0x7f, 0xb8, 0x0b, 0x85, 0xf8, 0x7e, 0xa3, 0x12, 0x00,
+	0x3e, 0xef, 0xba, 0x6d, 0x8c, 0x2f, 0xf1, 0x75, 0x25, 0x73, 0x88, 0x61, 0x67, 0xc5, 0x75, 0x45,
+	0x08, 0x4a, 0xb8, 0xd5, 0x6f, 0xbb, 0xfd, 0x0e, 0x6e, 0x5f, 0x77, 0x2e, 0x7b, 0xe7, 0x95, 0x8c,
+	0xa1, 0x6b, 0x0c, 0xb7, 0x2e, 0x3e, 0xb5, 0x2b, 0x59, 0x54, 0x85, 0xf2, 0x6d, 0xab, 0x77, 0xf3,
+	0xb8, 0x29, 0x37, 0x7b, 0xc0, 0x4e, 0xbb, 0x50, 0x15, 0xd2, 0x77, 0x44, 0x48, 0xf9, 0x40, 0x48,
+	0xcf, 0xb1, 0x4f, 0xec, 0xe7, 0xa6, 0xcf, 0xd4, 0x30, 0xba, 0x73, 0x06, 0x62, 0xd4, 0x48, 0x6a,
+	0x0d, 0x5b, 0x7b, 0x1b, 0x3f, 0xbf, 0x93, 0x93, 0x86, 0x2f, 0xf4, 0x23, 0xdc, 0xb0, 0x52, 0x77,
+	0x79, 0x53, 0x38, 0xf9, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x4c, 0xef, 0xae, 0x7e, 0xa7, 0x05, 0x00,
+	0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v2/go/openolt/openolt.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
similarity index 64%
rename from vendor/github.com/opencord/voltha-protos/v2/go/openolt/openolt.pb.go
rename to vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
index f46f33a..5ab9cbe 100644
--- a/vendor/github.com/opencord/voltha-protos/v2/go/openolt/openolt.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
@@ -7,7 +7,9 @@
 	context "context"
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	tech_profile "github.com/opencord/voltha-protos/v2/go/tech_profile"
+	common "github.com/opencord/voltha-protos/v3/go/common"
+	config "github.com/opencord/voltha-protos/v3/go/ext/config"
+	tech_profile "github.com/opencord/voltha-protos/v3/go/tech_profile"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
 	math "math"
@@ -109,6 +111,134 @@
 const InferredAdditionBWIndication_InferredAdditionBWIndication_Assured = InferredAdditionBWIndication(tech_profile.InferredAdditionBWIndication_InferredAdditionBWIndication_Assured)
 const InferredAdditionBWIndication_InferredAdditionBWIndication_BestEffort = InferredAdditionBWIndication(tech_profile.InferredAdditionBWIndication_InferredAdditionBWIndication_BestEffort)
 
+// ID from public import voltha_protos/common.proto
+type ID = common.ID
+
+// IDs from public import voltha_protos/common.proto
+type IDs = common.IDs
+
+// AdminState from public import voltha_protos/common.proto
+type AdminState = common.AdminState
+
+// OperStatus from public import voltha_protos/common.proto
+type OperStatus = common.OperStatus
+
+// ConnectStatus from public import voltha_protos/common.proto
+type ConnectStatus = common.ConnectStatus
+
+// OperationResp from public import voltha_protos/common.proto
+type OperationResp = common.OperationResp
+
+// ValueType from public import voltha_protos/common.proto
+type ValueType = common.ValueType
+
+// ValueSpecifier from public import voltha_protos/common.proto
+type ValueSpecifier = common.ValueSpecifier
+
+// ReturnValues from public import voltha_protos/common.proto
+type ReturnValues = common.ReturnValues
+
+// TestModeKeys from public import voltha_protos/common.proto
+type TestModeKeys = common.TestModeKeys
+
+var TestModeKeys_name = common.TestModeKeys_name
+var TestModeKeys_value = common.TestModeKeys_value
+
+const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
+
+// AdminState_Types from public import voltha_protos/common.proto
+type AdminState_Types = common.AdminState_Types
+
+var AdminState_Types_name = common.AdminState_Types_name
+var AdminState_Types_value = common.AdminState_Types_value
+
+const AdminState_UNKNOWN = AdminState_Types(common.AdminState_UNKNOWN)
+const AdminState_PREPROVISIONED = AdminState_Types(common.AdminState_PREPROVISIONED)
+const AdminState_ENABLED = AdminState_Types(common.AdminState_ENABLED)
+const AdminState_DISABLED = AdminState_Types(common.AdminState_DISABLED)
+const AdminState_DOWNLOADING_IMAGE = AdminState_Types(common.AdminState_DOWNLOADING_IMAGE)
+const AdminState_DELETED = AdminState_Types(common.AdminState_DELETED)
+
+// OperStatus_Types from public import voltha_protos/common.proto
+type OperStatus_Types = common.OperStatus_Types
+
+var OperStatus_Types_name = common.OperStatus_Types_name
+var OperStatus_Types_value = common.OperStatus_Types_value
+
+const OperStatus_UNKNOWN = OperStatus_Types(common.OperStatus_UNKNOWN)
+const OperStatus_DISCOVERED = OperStatus_Types(common.OperStatus_DISCOVERED)
+const OperStatus_ACTIVATING = OperStatus_Types(common.OperStatus_ACTIVATING)
+const OperStatus_TESTING = OperStatus_Types(common.OperStatus_TESTING)
+const OperStatus_ACTIVE = OperStatus_Types(common.OperStatus_ACTIVE)
+const OperStatus_FAILED = OperStatus_Types(common.OperStatus_FAILED)
+
+// ConnectStatus_Types from public import voltha_protos/common.proto
+type ConnectStatus_Types = common.ConnectStatus_Types
+
+var ConnectStatus_Types_name = common.ConnectStatus_Types_name
+var ConnectStatus_Types_value = common.ConnectStatus_Types_value
+
+const ConnectStatus_UNKNOWN = ConnectStatus_Types(common.ConnectStatus_UNKNOWN)
+const ConnectStatus_UNREACHABLE = ConnectStatus_Types(common.ConnectStatus_UNREACHABLE)
+const ConnectStatus_REACHABLE = ConnectStatus_Types(common.ConnectStatus_REACHABLE)
+
+// OperationResp_OperationReturnCode from public import voltha_protos/common.proto
+type OperationResp_OperationReturnCode = common.OperationResp_OperationReturnCode
+
+var OperationResp_OperationReturnCode_name = common.OperationResp_OperationReturnCode_name
+var OperationResp_OperationReturnCode_value = common.OperationResp_OperationReturnCode_value
+
+const OperationResp_OPERATION_SUCCESS = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_SUCCESS)
+const OperationResp_OPERATION_FAILURE = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_FAILURE)
+const OperationResp_OPERATION_UNSUPPORTED = OperationResp_OperationReturnCode(common.OperationResp_OPERATION_UNSUPPORTED)
+
+// ValueType_Type from public import voltha_protos/common.proto
+type ValueType_Type = common.ValueType_Type
+
+var ValueType_Type_name = common.ValueType_Type_name
+var ValueType_Type_value = common.ValueType_Type_value
+
+const ValueType_EMPTY = ValueType_Type(common.ValueType_EMPTY)
+const ValueType_DISTANCE = ValueType_Type(common.ValueType_DISTANCE)
+
+//* activation fail reason.
+type OnuIndication_ActivationFailReason int32
+
+const (
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_NONE                    OnuIndication_ActivationFailReason = 0
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_RANGING                 OnuIndication_ActivationFailReason = 1
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION OnuIndication_ActivationFailReason = 2
+	OnuIndication_ONU_ACTIVATION_FAIL_REASON_LOS                     OnuIndication_ActivationFailReason = 3
+	OnuIndication_ONU_ACTIVATION_FAIL_ONU_ALARM                      OnuIndication_ActivationFailReason = 4
+	OnuIndication_ONU_ACTIVATION_FAIL_SWITCH_OVER                    OnuIndication_ActivationFailReason = 5
+)
+
+var OnuIndication_ActivationFailReason_name = map[int32]string{
+	0: "ONU_ACTIVATION_FAIL_REASON_NONE",
+	1: "ONU_ACTIVATION_FAIL_REASON_RANGING",
+	2: "ONU_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION",
+	3: "ONU_ACTIVATION_FAIL_REASON_LOS",
+	4: "ONU_ACTIVATION_FAIL_ONU_ALARM",
+	5: "ONU_ACTIVATION_FAIL_SWITCH_OVER",
+}
+
+var OnuIndication_ActivationFailReason_value = map[string]int32{
+	"ONU_ACTIVATION_FAIL_REASON_NONE":                    0,
+	"ONU_ACTIVATION_FAIL_REASON_RANGING":                 1,
+	"ONU_ACTIVATION_FAIL_REASON_PASSWORD_AUTHENTICATION": 2,
+	"ONU_ACTIVATION_FAIL_REASON_LOS":                     3,
+	"ONU_ACTIVATION_FAIL_ONU_ALARM":                      4,
+	"ONU_ACTIVATION_FAIL_SWITCH_OVER":                    5,
+}
+
+func (x OnuIndication_ActivationFailReason) String() string {
+	return proto.EnumName(OnuIndication_ActivationFailReason_name, int32(x))
+}
+
+func (OnuIndication_ActivationFailReason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{5, 0}
+}
+
 type DeviceInfo_DeviceResourceRanges_Pool_PoolType int32
 
 const (
@@ -137,7 +267,7 @@
 }
 
 func (DeviceInfo_DeviceResourceRanges_Pool_PoolType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0, 0, 0}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16, 0, 0, 0}
 }
 
 type DeviceInfo_DeviceResourceRanges_Pool_SharingType int32
@@ -165,7 +295,63 @@
 }
 
 func (DeviceInfo_DeviceResourceRanges_Pool_SharingType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0, 0, 1}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16, 0, 0, 1}
+}
+
+type GroupMember_InterfaceType int32
+
+const (
+	GroupMember_PON           GroupMember_InterfaceType = 0
+	GroupMember_EPON_1G_PATH  GroupMember_InterfaceType = 1
+	GroupMember_EPON_10G_PATH GroupMember_InterfaceType = 2
+)
+
+var GroupMember_InterfaceType_name = map[int32]string{
+	0: "PON",
+	1: "EPON_1G_PATH",
+	2: "EPON_10G_PATH",
+}
+
+var GroupMember_InterfaceType_value = map[string]int32{
+	"PON":           0,
+	"EPON_1G_PATH":  1,
+	"EPON_10G_PATH": 2,
+}
+
+func (x GroupMember_InterfaceType) String() string {
+	return proto.EnumName(GroupMember_InterfaceType_name, int32(x))
+}
+
+func (GroupMember_InterfaceType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{44, 0}
+}
+
+type Group_GroupMembersCommand int32
+
+const (
+	Group_ADD_MEMBERS    Group_GroupMembersCommand = 0
+	Group_REMOVE_MEMBERS Group_GroupMembersCommand = 1
+	Group_SET_MEMBERS    Group_GroupMembersCommand = 2
+)
+
+var Group_GroupMembersCommand_name = map[int32]string{
+	0: "ADD_MEMBERS",
+	1: "REMOVE_MEMBERS",
+	2: "SET_MEMBERS",
+}
+
+var Group_GroupMembersCommand_value = map[string]int32{
+	"ADD_MEMBERS":    0,
+	"REMOVE_MEMBERS": 1,
+	"SET_MEMBERS":    2,
+}
+
+func (x Group_GroupMembersCommand) String() string {
+	return proto.EnumName(Group_GroupMembersCommand_name, int32(x))
+}
+
+func (Group_GroupMembersCommand) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{45, 0}
 }
 
 type Indication struct {
@@ -383,6 +569,12 @@
 	//	*AlarmIndication_OnuProcessingErrorInd
 	//	*AlarmIndication_OnuLossOfSyncFailInd
 	//	*AlarmIndication_OnuItuPonStatsInd
+	//	*AlarmIndication_OnuDeactivationFailureInd
+	//	*AlarmIndication_OnuRemoteDefectInd
+	//	*AlarmIndication_OnuLossGemDelineationInd
+	//	*AlarmIndication_OnuPhysicalEquipmentErrorInd
+	//	*AlarmIndication_OnuLossOfAckInd
+	//	*AlarmIndication_OnuDiffReachExceededInd
 	Data                 isAlarmIndication_Data `protobuf_oneof:"data"`
 	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
 	XXX_unrecognized     []byte                 `json:"-"`
@@ -470,6 +662,30 @@
 	OnuItuPonStatsInd *OnuItuPonStatsIndication `protobuf:"bytes,13,opt,name=onu_itu_pon_stats_ind,json=onuItuPonStatsInd,proto3,oneof"`
 }
 
+type AlarmIndication_OnuDeactivationFailureInd struct {
+	OnuDeactivationFailureInd *OnuDeactivationFailureIndication `protobuf:"bytes,14,opt,name=onu_deactivation_failure_ind,json=onuDeactivationFailureInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuRemoteDefectInd struct {
+	OnuRemoteDefectInd *OnuRemoteDefectIndication `protobuf:"bytes,15,opt,name=onu_remote_defect_ind,json=onuRemoteDefectInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuLossGemDelineationInd struct {
+	OnuLossGemDelineationInd *OnuLossOfGEMChannelDelineationIndication `protobuf:"bytes,16,opt,name=onu_loss_gem_delineation_ind,json=onuLossGemDelineationInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuPhysicalEquipmentErrorInd struct {
+	OnuPhysicalEquipmentErrorInd *OnuPhysicalEquipmentErrorIndication `protobuf:"bytes,17,opt,name=onu_physical_equipment_error_ind,json=onuPhysicalEquipmentErrorInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuLossOfAckInd struct {
+	OnuLossOfAckInd *OnuLossOfAcknowledgementIndication `protobuf:"bytes,18,opt,name=onu_loss_of_ack_ind,json=onuLossOfAckInd,proto3,oneof"`
+}
+
+type AlarmIndication_OnuDiffReachExceededInd struct {
+	OnuDiffReachExceededInd *OnuDifferentialReachExceededIndication `protobuf:"bytes,19,opt,name=onu_diff_reach_exceeded_ind,json=onuDiffReachExceededInd,proto3,oneof"`
+}
+
 func (*AlarmIndication_LosInd) isAlarmIndication_Data() {}
 
 func (*AlarmIndication_DyingGaspInd) isAlarmIndication_Data() {}
@@ -496,6 +712,18 @@
 
 func (*AlarmIndication_OnuItuPonStatsInd) isAlarmIndication_Data() {}
 
+func (*AlarmIndication_OnuDeactivationFailureInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuRemoteDefectInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuLossGemDelineationInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuPhysicalEquipmentErrorInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuLossOfAckInd) isAlarmIndication_Data() {}
+
+func (*AlarmIndication_OnuDiffReachExceededInd) isAlarmIndication_Data() {}
+
 func (m *AlarmIndication) GetData() isAlarmIndication_Data {
 	if m != nil {
 		return m.Data
@@ -594,6 +822,48 @@
 	return nil
 }
 
+func (m *AlarmIndication) GetOnuDeactivationFailureInd() *OnuDeactivationFailureIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuDeactivationFailureInd); ok {
+		return x.OnuDeactivationFailureInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuRemoteDefectInd() *OnuRemoteDefectIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuRemoteDefectInd); ok {
+		return x.OnuRemoteDefectInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuLossGemDelineationInd() *OnuLossOfGEMChannelDelineationIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuLossGemDelineationInd); ok {
+		return x.OnuLossGemDelineationInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuPhysicalEquipmentErrorInd() *OnuPhysicalEquipmentErrorIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuPhysicalEquipmentErrorInd); ok {
+		return x.OnuPhysicalEquipmentErrorInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuLossOfAckInd() *OnuLossOfAcknowledgementIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuLossOfAckInd); ok {
+		return x.OnuLossOfAckInd
+	}
+	return nil
+}
+
+func (m *AlarmIndication) GetOnuDiffReachExceededInd() *OnuDifferentialReachExceededIndication {
+	if x, ok := m.GetData().(*AlarmIndication_OnuDiffReachExceededInd); ok {
+		return x.OnuDiffReachExceededInd
+	}
+	return nil
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*AlarmIndication) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -610,6 +880,12 @@
 		(*AlarmIndication_OnuProcessingErrorInd)(nil),
 		(*AlarmIndication_OnuLossOfSyncFailInd)(nil),
 		(*AlarmIndication_OnuItuPonStatsInd)(nil),
+		(*AlarmIndication_OnuDeactivationFailureInd)(nil),
+		(*AlarmIndication_OnuRemoteDefectInd)(nil),
+		(*AlarmIndication_OnuLossGemDelineationInd)(nil),
+		(*AlarmIndication_OnuPhysicalEquipmentErrorInd)(nil),
+		(*AlarmIndication_OnuLossOfAckInd)(nil),
+		(*AlarmIndication_OnuDiffReachExceededInd)(nil),
 	}
 }
 
@@ -747,14 +1023,15 @@
 }
 
 type OnuIndication struct {
-	IntfId               uint32        `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OnuId                uint32        `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	OperState            string        `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
-	AdminState           string        `protobuf:"bytes,5,opt,name=admin_state,json=adminState,proto3" json:"admin_state,omitempty"`
-	SerialNumber         *SerialNumber `protobuf:"bytes,4,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
-	XXX_unrecognized     []byte        `json:"-"`
-	XXX_sizecache        int32         `json:"-"`
+	IntfId               uint32                             `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32                             `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	OperState            string                             `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
+	AdminState           string                             `protobuf:"bytes,5,opt,name=admin_state,json=adminState,proto3" json:"admin_state,omitempty"`
+	SerialNumber         *SerialNumber                      `protobuf:"bytes,4,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+	FailReason           OnuIndication_ActivationFailReason `protobuf:"varint,6,opt,name=fail_reason,json=failReason,proto3,enum=openolt.OnuIndication_ActivationFailReason" json:"fail_reason,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
+	XXX_unrecognized     []byte                             `json:"-"`
+	XXX_sizecache        int32                              `json:"-"`
 }
 
 func (m *OnuIndication) Reset()         { *m = OnuIndication{} }
@@ -817,6 +1094,13 @@
 	return nil
 }
 
+func (m *OnuIndication) GetFailReason() OnuIndication_ActivationFailReason {
+	if m != nil {
+		return m.FailReason
+	}
+	return OnuIndication_ONU_ACTIVATION_FAIL_REASON_NONE
+}
+
 type IntfOperIndication struct {
 	Type                 string   `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
 	IntfId               uint32   `protobuf:"fixed32,2,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
@@ -1097,6 +1381,7 @@
 	OnuId                uint32        `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
 	SerialNumber         *SerialNumber `protobuf:"bytes,3,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
 	Pir                  uint32        `protobuf:"fixed32,4,opt,name=pir,proto3" json:"pir,omitempty"`
+	OmccEncryption       bool          `protobuf:"varint,5,opt,name=omcc_encryption,json=omccEncryption,proto3" json:"omcc_encryption,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
 	XXX_unrecognized     []byte        `json:"-"`
 	XXX_sizecache        int32         `json:"-"`
@@ -1155,6 +1440,76 @@
 	return 0
 }
 
+func (m *Onu) GetOmccEncryption() bool {
+	if m != nil {
+		return m.OmccEncryption
+	}
+	return false
+}
+
+type OnuLogicalDistance struct {
+	IntfId                 uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                  uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	LogicalOnuDistanceZero uint32   `protobuf:"fixed32,3,opt,name=logical_onu_distance_zero,json=logicalOnuDistanceZero,proto3" json:"logical_onu_distance_zero,omitempty"`
+	LogicalOnuDistance     uint32   `protobuf:"fixed32,4,opt,name=logical_onu_distance,json=logicalOnuDistance,proto3" json:"logical_onu_distance,omitempty"`
+	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
+	XXX_unrecognized       []byte   `json:"-"`
+	XXX_sizecache          int32    `json:"-"`
+}
+
+func (m *OnuLogicalDistance) Reset()         { *m = OnuLogicalDistance{} }
+func (m *OnuLogicalDistance) String() string { return proto.CompactTextString(m) }
+func (*OnuLogicalDistance) ProtoMessage()    {}
+func (*OnuLogicalDistance) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{12}
+}
+
+func (m *OnuLogicalDistance) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuLogicalDistance.Unmarshal(m, b)
+}
+func (m *OnuLogicalDistance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuLogicalDistance.Marshal(b, m, deterministic)
+}
+func (m *OnuLogicalDistance) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuLogicalDistance.Merge(m, src)
+}
+func (m *OnuLogicalDistance) XXX_Size() int {
+	return xxx_messageInfo_OnuLogicalDistance.Size(m)
+}
+func (m *OnuLogicalDistance) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuLogicalDistance.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuLogicalDistance proto.InternalMessageInfo
+
+func (m *OnuLogicalDistance) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuLogicalDistance) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuLogicalDistance) GetLogicalOnuDistanceZero() uint32 {
+	if m != nil {
+		return m.LogicalOnuDistanceZero
+	}
+	return 0
+}
+
+func (m *OnuLogicalDistance) GetLogicalOnuDistance() uint32 {
+	if m != nil {
+		return m.LogicalOnuDistance
+	}
+	return 0
+}
+
 type OmciMsg struct {
 	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
 	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
@@ -1168,7 +1523,7 @@
 func (m *OmciMsg) String() string { return proto.CompactTextString(m) }
 func (*OmciMsg) ProtoMessage()    {}
 func (*OmciMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{12}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{13}
 }
 
 func (m *OmciMsg) XXX_Unmarshal(b []byte) error {
@@ -1225,7 +1580,7 @@
 func (m *OnuPacket) String() string { return proto.CompactTextString(m) }
 func (*OnuPacket) ProtoMessage()    {}
 func (*OnuPacket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{13}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{14}
 }
 
 func (m *OnuPacket) XXX_Unmarshal(b []byte) error {
@@ -1293,7 +1648,7 @@
 func (m *UplinkPacket) String() string { return proto.CompactTextString(m) }
 func (*UplinkPacket) ProtoMessage()    {}
 func (*UplinkPacket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{14}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{15}
 }
 
 func (m *UplinkPacket) XXX_Unmarshal(b []byte) error {
@@ -1357,7 +1712,7 @@
 func (m *DeviceInfo) String() string { return proto.CompactTextString(m) }
 func (*DeviceInfo) ProtoMessage()    {}
 func (*DeviceInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16}
 }
 
 func (m *DeviceInfo) XXX_Unmarshal(b []byte) error {
@@ -1513,7 +1868,7 @@
 func (m *DeviceInfo_DeviceResourceRanges) String() string { return proto.CompactTextString(m) }
 func (*DeviceInfo_DeviceResourceRanges) ProtoMessage()    {}
 func (*DeviceInfo_DeviceResourceRanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16, 0}
 }
 
 func (m *DeviceInfo_DeviceResourceRanges) XXX_Unmarshal(b []byte) error {
@@ -1569,7 +1924,7 @@
 func (m *DeviceInfo_DeviceResourceRanges_Pool) String() string { return proto.CompactTextString(m) }
 func (*DeviceInfo_DeviceResourceRanges_Pool) ProtoMessage()    {}
 func (*DeviceInfo_DeviceResourceRanges_Pool) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{15, 0, 0}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{16, 0, 0}
 }
 
 func (m *DeviceInfo_DeviceResourceRanges_Pool) XXX_Unmarshal(b []byte) error {
@@ -1643,7 +1998,7 @@
 func (m *Classifier) String() string { return proto.CompactTextString(m) }
 func (*Classifier) ProtoMessage()    {}
 func (*Classifier) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{16}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{17}
 }
 
 func (m *Classifier) XXX_Unmarshal(b []byte) error {
@@ -1773,6 +2128,12 @@
 	AddOuterTag          bool     `protobuf:"varint,1,opt,name=add_outer_tag,json=addOuterTag,proto3" json:"add_outer_tag,omitempty"`
 	RemoveOuterTag       bool     `protobuf:"varint,2,opt,name=remove_outer_tag,json=removeOuterTag,proto3" json:"remove_outer_tag,omitempty"`
 	TrapToHost           bool     `protobuf:"varint,3,opt,name=trap_to_host,json=trapToHost,proto3" json:"trap_to_host,omitempty"`
+	RemarkOuterPbits     bool     `protobuf:"varint,4,opt,name=remark_outer_pbits,json=remarkOuterPbits,proto3" json:"remark_outer_pbits,omitempty"`
+	RemarkInnerPbits     bool     `protobuf:"varint,5,opt,name=remark_inner_pbits,json=remarkInnerPbits,proto3" json:"remark_inner_pbits,omitempty"`
+	AddInnerTag          bool     `protobuf:"varint,6,opt,name=add_inner_tag,json=addInnerTag,proto3" json:"add_inner_tag,omitempty"`
+	RemoveInnerTag       bool     `protobuf:"varint,7,opt,name=remove_inner_tag,json=removeInnerTag,proto3" json:"remove_inner_tag,omitempty"`
+	TranslateInnerTag    bool     `protobuf:"varint,8,opt,name=translate_inner_tag,json=translateInnerTag,proto3" json:"translate_inner_tag,omitempty"`
+	TranslateOuterTag    bool     `protobuf:"varint,9,opt,name=translate_outer_tag,json=translateOuterTag,proto3" json:"translate_outer_tag,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1782,7 +2143,7 @@
 func (m *ActionCmd) String() string { return proto.CompactTextString(m) }
 func (*ActionCmd) ProtoMessage()    {}
 func (*ActionCmd) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{17}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{18}
 }
 
 func (m *ActionCmd) XXX_Unmarshal(b []byte) error {
@@ -1824,6 +2185,48 @@
 	return false
 }
 
+func (m *ActionCmd) GetRemarkOuterPbits() bool {
+	if m != nil {
+		return m.RemarkOuterPbits
+	}
+	return false
+}
+
+func (m *ActionCmd) GetRemarkInnerPbits() bool {
+	if m != nil {
+		return m.RemarkInnerPbits
+	}
+	return false
+}
+
+func (m *ActionCmd) GetAddInnerTag() bool {
+	if m != nil {
+		return m.AddInnerTag
+	}
+	return false
+}
+
+func (m *ActionCmd) GetRemoveInnerTag() bool {
+	if m != nil {
+		return m.RemoveInnerTag
+	}
+	return false
+}
+
+func (m *ActionCmd) GetTranslateInnerTag() bool {
+	if m != nil {
+		return m.TranslateInnerTag
+	}
+	return false
+}
+
+func (m *ActionCmd) GetTranslateOuterTag() bool {
+	if m != nil {
+		return m.TranslateOuterTag
+	}
+	return false
+}
+
 type Action struct {
 	Cmd                  *ActionCmd `protobuf:"bytes,1,opt,name=cmd,proto3" json:"cmd,omitempty"`
 	OVid                 uint32     `protobuf:"fixed32,2,opt,name=o_vid,json=oVid,proto3" json:"o_vid,omitempty"`
@@ -1841,7 +2244,7 @@
 func (m *Action) String() string { return proto.CompactTextString(m) }
 func (*Action) ProtoMessage()    {}
 func (*Action) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{18}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{19}
 }
 
 func (m *Action) XXX_Unmarshal(b []byte) error {
@@ -1925,6 +2328,8 @@
 	Priority             int32       `protobuf:"fixed32,9,opt,name=priority,proto3" json:"priority,omitempty"`
 	Cookie               uint64      `protobuf:"fixed64,12,opt,name=cookie,proto3" json:"cookie,omitempty"`
 	PortNo               uint32      `protobuf:"fixed32,13,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+	GroupId              uint32      `protobuf:"fixed32,14,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+	TechProfileId        uint32      `protobuf:"fixed32,15,opt,name=tech_profile_id,json=techProfileId,proto3" json:"tech_profile_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
 	XXX_unrecognized     []byte      `json:"-"`
 	XXX_sizecache        int32       `json:"-"`
@@ -1934,7 +2339,7 @@
 func (m *Flow) String() string { return proto.CompactTextString(m) }
 func (*Flow) ProtoMessage()    {}
 func (*Flow) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{19}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{20}
 }
 
 func (m *Flow) XXX_Unmarshal(b []byte) error {
@@ -2046,6 +2451,20 @@
 	return 0
 }
 
+func (m *Flow) GetGroupId() uint32 {
+	if m != nil {
+		return m.GroupId
+	}
+	return 0
+}
+
+func (m *Flow) GetTechProfileId() uint32 {
+	if m != nil {
+		return m.TechProfileId
+	}
+	return 0
+}
+
 type SerialNumber struct {
 	VendorId             []byte   `protobuf:"bytes,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
 	VendorSpecific       []byte   `protobuf:"bytes,2,opt,name=vendor_specific,json=vendorSpecific,proto3" json:"vendor_specific,omitempty"`
@@ -2058,7 +2477,7 @@
 func (m *SerialNumber) String() string { return proto.CompactTextString(m) }
 func (*SerialNumber) ProtoMessage()    {}
 func (*SerialNumber) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{20}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{21}
 }
 
 func (m *SerialNumber) XXX_Unmarshal(b []byte) error {
@@ -2119,7 +2538,7 @@
 func (m *PortStatistics) String() string { return proto.CompactTextString(m) }
 func (*PortStatistics) ProtoMessage()    {}
 func (*PortStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{21}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{22}
 }
 
 func (m *PortStatistics) XXX_Unmarshal(b []byte) error {
@@ -2268,7 +2687,7 @@
 func (m *FlowStatistics) String() string { return proto.CompactTextString(m) }
 func (*FlowStatistics) ProtoMessage()    {}
 func (*FlowStatistics) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{22}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{23}
 }
 
 func (m *FlowStatistics) XXX_Unmarshal(b []byte) error {
@@ -2343,7 +2762,7 @@
 func (m *LosIndication) String() string { return proto.CompactTextString(m) }
 func (*LosIndication) ProtoMessage()    {}
 func (*LosIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{23}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{24}
 }
 
 func (m *LosIndication) XXX_Unmarshal(b []byte) error {
@@ -2391,7 +2810,7 @@
 func (m *DyingGaspIndication) String() string { return proto.CompactTextString(m) }
 func (*DyingGaspIndication) ProtoMessage()    {}
 func (*DyingGaspIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{24}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{25}
 }
 
 func (m *DyingGaspIndication) XXX_Unmarshal(b []byte) error {
@@ -2451,7 +2870,7 @@
 func (m *OnuAlarmIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuAlarmIndication) ProtoMessage()    {}
 func (*OnuAlarmIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{25}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{26}
 }
 
 func (m *OnuAlarmIndication) XXX_Unmarshal(b []byte) error {
@@ -2541,7 +2960,7 @@
 func (m *OnuStartupFailureIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuStartupFailureIndication) ProtoMessage()    {}
 func (*OnuStartupFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{26}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{27}
 }
 
 func (m *OnuStartupFailureIndication) XXX_Unmarshal(b []byte) error {
@@ -2597,7 +3016,7 @@
 func (m *OnuSignalDegradeIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuSignalDegradeIndication) ProtoMessage()    {}
 func (*OnuSignalDegradeIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{27}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{28}
 }
 
 func (m *OnuSignalDegradeIndication) XXX_Unmarshal(b []byte) error {
@@ -2661,7 +3080,7 @@
 func (m *OnuDriftOfWindowIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuDriftOfWindowIndication) ProtoMessage()    {}
 func (*OnuDriftOfWindowIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{28}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{29}
 }
 
 func (m *OnuDriftOfWindowIndication) XXX_Unmarshal(b []byte) error {
@@ -2730,7 +3149,7 @@
 func (m *OnuLossOfOmciChannelIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuLossOfOmciChannelIndication) ProtoMessage()    {}
 func (*OnuLossOfOmciChannelIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{29}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{30}
 }
 
 func (m *OnuLossOfOmciChannelIndication) XXX_Unmarshal(b []byte) error {
@@ -2786,7 +3205,7 @@
 func (m *OnuSignalsFailureIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuSignalsFailureIndication) ProtoMessage()    {}
 func (*OnuSignalsFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{30}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{31}
 }
 
 func (m *OnuSignalsFailureIndication) XXX_Unmarshal(b []byte) error {
@@ -2849,7 +3268,7 @@
 func (m *OnuTransmissionInterferenceWarning) String() string { return proto.CompactTextString(m) }
 func (*OnuTransmissionInterferenceWarning) ProtoMessage()    {}
 func (*OnuTransmissionInterferenceWarning) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{31}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{32}
 }
 
 func (m *OnuTransmissionInterferenceWarning) XXX_Unmarshal(b []byte) error {
@@ -2911,7 +3330,7 @@
 func (m *OnuActivationFailureIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuActivationFailureIndication) ProtoMessage()    {}
 func (*OnuActivationFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{32}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{33}
 }
 
 func (m *OnuActivationFailureIndication) XXX_Unmarshal(b []byte) error {
@@ -2966,7 +3385,7 @@
 func (m *OnuLossOfKeySyncFailureIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuLossOfKeySyncFailureIndication) ProtoMessage()    {}
 func (*OnuLossOfKeySyncFailureIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{33}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{34}
 }
 
 func (m *OnuLossOfKeySyncFailureIndication) XXX_Unmarshal(b []byte) error {
@@ -3008,20 +3427,69 @@
 	return ""
 }
 
-type OnuItuPonStatsIndication struct {
-	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
-	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
-	RdiErrors            uint32   `protobuf:"fixed32,3,opt,name=rdi_errors,json=rdiErrors,proto3" json:"rdi_errors,omitempty"`
+type RdiErrorIndication struct {
+	RdiErrorCount        uint64   `protobuf:"fixed64,1,opt,name=rdi_error_count,json=rdiErrorCount,proto3" json:"rdi_error_count,omitempty"`
+	Status               string   `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
 }
 
+func (m *RdiErrorIndication) Reset()         { *m = RdiErrorIndication{} }
+func (m *RdiErrorIndication) String() string { return proto.CompactTextString(m) }
+func (*RdiErrorIndication) ProtoMessage()    {}
+func (*RdiErrorIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{35}
+}
+
+func (m *RdiErrorIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RdiErrorIndication.Unmarshal(m, b)
+}
+func (m *RdiErrorIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RdiErrorIndication.Marshal(b, m, deterministic)
+}
+func (m *RdiErrorIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RdiErrorIndication.Merge(m, src)
+}
+func (m *RdiErrorIndication) XXX_Size() int {
+	return xxx_messageInfo_RdiErrorIndication.Size(m)
+}
+func (m *RdiErrorIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_RdiErrorIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RdiErrorIndication proto.InternalMessageInfo
+
+func (m *RdiErrorIndication) GetRdiErrorCount() uint64 {
+	if m != nil {
+		return m.RdiErrorCount
+	}
+	return 0
+}
+
+func (m *RdiErrorIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+type OnuItuPonStatsIndication struct {
+	IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId  uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	// Types that are valid to be assigned to Stats:
+	//	*OnuItuPonStatsIndication_RdiErrorInd
+	Stats                isOnuItuPonStatsIndication_Stats `protobuf_oneof:"stats"`
+	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
+	XXX_unrecognized     []byte                           `json:"-"`
+	XXX_sizecache        int32                            `json:"-"`
+}
+
 func (m *OnuItuPonStatsIndication) Reset()         { *m = OnuItuPonStatsIndication{} }
 func (m *OnuItuPonStatsIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuItuPonStatsIndication) ProtoMessage()    {}
 func (*OnuItuPonStatsIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{34}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{36}
 }
 
 func (m *OnuItuPonStatsIndication) XXX_Unmarshal(b []byte) error {
@@ -3056,11 +3524,35 @@
 	return 0
 }
 
-func (m *OnuItuPonStatsIndication) GetRdiErrors() uint32 {
+type isOnuItuPonStatsIndication_Stats interface {
+	isOnuItuPonStatsIndication_Stats()
+}
+
+type OnuItuPonStatsIndication_RdiErrorInd struct {
+	RdiErrorInd *RdiErrorIndication `protobuf:"bytes,3,opt,name=rdi_error_ind,json=rdiErrorInd,proto3,oneof"`
+}
+
+func (*OnuItuPonStatsIndication_RdiErrorInd) isOnuItuPonStatsIndication_Stats() {}
+
+func (m *OnuItuPonStatsIndication) GetStats() isOnuItuPonStatsIndication_Stats {
 	if m != nil {
-		return m.RdiErrors
+		return m.Stats
 	}
-	return 0
+	return nil
+}
+
+func (m *OnuItuPonStatsIndication) GetRdiErrorInd() *RdiErrorIndication {
+	if x, ok := m.GetStats().(*OnuItuPonStatsIndication_RdiErrorInd); ok {
+		return x.RdiErrorInd
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OnuItuPonStatsIndication) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*OnuItuPonStatsIndication_RdiErrorInd)(nil),
+	}
 }
 
 type OnuProcessingErrorIndication struct {
@@ -3075,7 +3567,7 @@
 func (m *OnuProcessingErrorIndication) String() string { return proto.CompactTextString(m) }
 func (*OnuProcessingErrorIndication) ProtoMessage()    {}
 func (*OnuProcessingErrorIndication) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{35}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{37}
 }
 
 func (m *OnuProcessingErrorIndication) XXX_Unmarshal(b []byte) error {
@@ -3110,6 +3602,529 @@
 	return 0
 }
 
+type OnuDeactivationFailureIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuDeactivationFailureIndication) Reset()         { *m = OnuDeactivationFailureIndication{} }
+func (m *OnuDeactivationFailureIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuDeactivationFailureIndication) ProtoMessage()    {}
+func (*OnuDeactivationFailureIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{38}
+}
+
+func (m *OnuDeactivationFailureIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuDeactivationFailureIndication.Unmarshal(m, b)
+}
+func (m *OnuDeactivationFailureIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuDeactivationFailureIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuDeactivationFailureIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuDeactivationFailureIndication.Merge(m, src)
+}
+func (m *OnuDeactivationFailureIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuDeactivationFailureIndication.Size(m)
+}
+func (m *OnuDeactivationFailureIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuDeactivationFailureIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuDeactivationFailureIndication proto.InternalMessageInfo
+
+func (m *OnuDeactivationFailureIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuDeactivationFailureIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuDeactivationFailureIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+type OnuRemoteDefectIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	RdiErrors            uint64   `protobuf:"fixed64,3,opt,name=rdi_errors,json=rdiErrors,proto3" json:"rdi_errors,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuRemoteDefectIndication) Reset()         { *m = OnuRemoteDefectIndication{} }
+func (m *OnuRemoteDefectIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuRemoteDefectIndication) ProtoMessage()    {}
+func (*OnuRemoteDefectIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{39}
+}
+
+func (m *OnuRemoteDefectIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuRemoteDefectIndication.Unmarshal(m, b)
+}
+func (m *OnuRemoteDefectIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuRemoteDefectIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuRemoteDefectIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuRemoteDefectIndication.Merge(m, src)
+}
+func (m *OnuRemoteDefectIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuRemoteDefectIndication.Size(m)
+}
+func (m *OnuRemoteDefectIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuRemoteDefectIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuRemoteDefectIndication proto.InternalMessageInfo
+
+func (m *OnuRemoteDefectIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuRemoteDefectIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuRemoteDefectIndication) GetRdiErrors() uint64 {
+	if m != nil {
+		return m.RdiErrors
+	}
+	return 0
+}
+
+type OnuLossOfGEMChannelDelineationIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	DelineationErrors    uint32   `protobuf:"fixed32,4,opt,name=delineation_errors,json=delineationErrors,proto3" json:"delineation_errors,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) Reset() {
+	*m = OnuLossOfGEMChannelDelineationIndication{}
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuLossOfGEMChannelDelineationIndication) ProtoMessage()    {}
+func (*OnuLossOfGEMChannelDelineationIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{40}
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.Unmarshal(m, b)
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.Merge(m, src)
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.Size(m)
+}
+func (m *OnuLossOfGEMChannelDelineationIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuLossOfGEMChannelDelineationIndication proto.InternalMessageInfo
+
+func (m *OnuLossOfGEMChannelDelineationIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+func (m *OnuLossOfGEMChannelDelineationIndication) GetDelineationErrors() uint32 {
+	if m != nil {
+		return m.DelineationErrors
+	}
+	return 0
+}
+
+type OnuPhysicalEquipmentErrorIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuPhysicalEquipmentErrorIndication) Reset()         { *m = OnuPhysicalEquipmentErrorIndication{} }
+func (m *OnuPhysicalEquipmentErrorIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuPhysicalEquipmentErrorIndication) ProtoMessage()    {}
+func (*OnuPhysicalEquipmentErrorIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{41}
+}
+
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.Unmarshal(m, b)
+}
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.Merge(m, src)
+}
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.Size(m)
+}
+func (m *OnuPhysicalEquipmentErrorIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuPhysicalEquipmentErrorIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuPhysicalEquipmentErrorIndication proto.InternalMessageInfo
+
+func (m *OnuPhysicalEquipmentErrorIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuPhysicalEquipmentErrorIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuPhysicalEquipmentErrorIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+type OnuLossOfAcknowledgementIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuLossOfAcknowledgementIndication) Reset()         { *m = OnuLossOfAcknowledgementIndication{} }
+func (m *OnuLossOfAcknowledgementIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuLossOfAcknowledgementIndication) ProtoMessage()    {}
+func (*OnuLossOfAcknowledgementIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{42}
+}
+
+func (m *OnuLossOfAcknowledgementIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuLossOfAcknowledgementIndication.Unmarshal(m, b)
+}
+func (m *OnuLossOfAcknowledgementIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuLossOfAcknowledgementIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuLossOfAcknowledgementIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuLossOfAcknowledgementIndication.Merge(m, src)
+}
+func (m *OnuLossOfAcknowledgementIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuLossOfAcknowledgementIndication.Size(m)
+}
+func (m *OnuLossOfAcknowledgementIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuLossOfAcknowledgementIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuLossOfAcknowledgementIndication proto.InternalMessageInfo
+
+func (m *OnuLossOfAcknowledgementIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuLossOfAcknowledgementIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuLossOfAcknowledgementIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+type OnuDifferentialReachExceededIndication struct {
+	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+	Status               string   `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
+	Distance             uint32   `protobuf:"fixed32,4,opt,name=distance,proto3" json:"distance,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OnuDifferentialReachExceededIndication) Reset() {
+	*m = OnuDifferentialReachExceededIndication{}
+}
+func (m *OnuDifferentialReachExceededIndication) String() string { return proto.CompactTextString(m) }
+func (*OnuDifferentialReachExceededIndication) ProtoMessage()    {}
+func (*OnuDifferentialReachExceededIndication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{43}
+}
+
+func (m *OnuDifferentialReachExceededIndication) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OnuDifferentialReachExceededIndication.Unmarshal(m, b)
+}
+func (m *OnuDifferentialReachExceededIndication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OnuDifferentialReachExceededIndication.Marshal(b, m, deterministic)
+}
+func (m *OnuDifferentialReachExceededIndication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OnuDifferentialReachExceededIndication.Merge(m, src)
+}
+func (m *OnuDifferentialReachExceededIndication) XXX_Size() int {
+	return xxx_messageInfo_OnuDifferentialReachExceededIndication.Size(m)
+}
+func (m *OnuDifferentialReachExceededIndication) XXX_DiscardUnknown() {
+	xxx_messageInfo_OnuDifferentialReachExceededIndication.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OnuDifferentialReachExceededIndication proto.InternalMessageInfo
+
+func (m *OnuDifferentialReachExceededIndication) GetIntfId() uint32 {
+	if m != nil {
+		return m.IntfId
+	}
+	return 0
+}
+
+func (m *OnuDifferentialReachExceededIndication) GetOnuId() uint32 {
+	if m != nil {
+		return m.OnuId
+	}
+	return 0
+}
+
+func (m *OnuDifferentialReachExceededIndication) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+func (m *OnuDifferentialReachExceededIndication) GetDistance() uint32 {
+	if m != nil {
+		return m.Distance
+	}
+	return 0
+}
+
+type GroupMember struct {
+	InterfaceId          uint32                    `protobuf:"varint,1,opt,name=interface_id,json=interfaceId,proto3" json:"interface_id,omitempty"`
+	InterfaceType        GroupMember_InterfaceType `protobuf:"varint,2,opt,name=interface_type,json=interfaceType,proto3,enum=openolt.GroupMember_InterfaceType" json:"interface_type,omitempty"`
+	GemPortId            uint32                    `protobuf:"varint,3,opt,name=gem_port_id,json=gemPortId,proto3" json:"gem_port_id,omitempty"`
+	Priority             uint32                    `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
+	XXX_unrecognized     []byte                    `json:"-"`
+	XXX_sizecache        int32                     `json:"-"`
+}
+
+func (m *GroupMember) Reset()         { *m = GroupMember{} }
+func (m *GroupMember) String() string { return proto.CompactTextString(m) }
+func (*GroupMember) ProtoMessage()    {}
+func (*GroupMember) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{44}
+}
+
+func (m *GroupMember) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GroupMember.Unmarshal(m, b)
+}
+func (m *GroupMember) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GroupMember.Marshal(b, m, deterministic)
+}
+func (m *GroupMember) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GroupMember.Merge(m, src)
+}
+func (m *GroupMember) XXX_Size() int {
+	return xxx_messageInfo_GroupMember.Size(m)
+}
+func (m *GroupMember) XXX_DiscardUnknown() {
+	xxx_messageInfo_GroupMember.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GroupMember proto.InternalMessageInfo
+
+func (m *GroupMember) GetInterfaceId() uint32 {
+	if m != nil {
+		return m.InterfaceId
+	}
+	return 0
+}
+
+func (m *GroupMember) GetInterfaceType() GroupMember_InterfaceType {
+	if m != nil {
+		return m.InterfaceType
+	}
+	return GroupMember_PON
+}
+
+func (m *GroupMember) GetGemPortId() uint32 {
+	if m != nil {
+		return m.GemPortId
+	}
+	return 0
+}
+
+func (m *GroupMember) GetPriority() uint32 {
+	if m != nil {
+		return m.Priority
+	}
+	return 0
+}
+
+type Group struct {
+	GroupId              uint32                    `protobuf:"varint,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+	Command              Group_GroupMembersCommand `protobuf:"varint,2,opt,name=command,proto3,enum=openolt.Group_GroupMembersCommand" json:"command,omitempty"`
+	Members              []*GroupMember            `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"`
+	Action               *Action                   `protobuf:"bytes,4,opt,name=action,proto3" json:"action,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
+	XXX_unrecognized     []byte                    `json:"-"`
+	XXX_sizecache        int32                     `json:"-"`
+}
+
+func (m *Group) Reset()         { *m = Group{} }
+func (m *Group) String() string { return proto.CompactTextString(m) }
+func (*Group) ProtoMessage()    {}
+func (*Group) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{45}
+}
+
+func (m *Group) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Group.Unmarshal(m, b)
+}
+func (m *Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Group.Marshal(b, m, deterministic)
+}
+func (m *Group) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Group.Merge(m, src)
+}
+func (m *Group) XXX_Size() int {
+	return xxx_messageInfo_Group.Size(m)
+}
+func (m *Group) XXX_DiscardUnknown() {
+	xxx_messageInfo_Group.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Group proto.InternalMessageInfo
+
+func (m *Group) GetGroupId() uint32 {
+	if m != nil {
+		return m.GroupId
+	}
+	return 0
+}
+
+func (m *Group) GetCommand() Group_GroupMembersCommand {
+	if m != nil {
+		return m.Command
+	}
+	return Group_ADD_MEMBERS
+}
+
+func (m *Group) GetMembers() []*GroupMember {
+	if m != nil {
+		return m.Members
+	}
+	return nil
+}
+
+func (m *Group) GetAction() *Action {
+	if m != nil {
+		return m.Action
+	}
+	return nil
+}
+
+type ValueParam struct {
+	Onu                  *Onu                  `protobuf:"bytes,1,opt,name=onu,proto3" json:"onu,omitempty"`
+	Value                common.ValueType_Type `protobuf:"varint,2,opt,name=value,proto3,enum=common.ValueType_Type" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *ValueParam) Reset()         { *m = ValueParam{} }
+func (m *ValueParam) String() string { return proto.CompactTextString(m) }
+func (*ValueParam) ProtoMessage()    {}
+func (*ValueParam) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c072e7aa0dfd74d5, []int{46}
+}
+
+func (m *ValueParam) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ValueParam.Unmarshal(m, b)
+}
+func (m *ValueParam) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ValueParam.Marshal(b, m, deterministic)
+}
+func (m *ValueParam) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ValueParam.Merge(m, src)
+}
+func (m *ValueParam) XXX_Size() int {
+	return xxx_messageInfo_ValueParam.Size(m)
+}
+func (m *ValueParam) XXX_DiscardUnknown() {
+	xxx_messageInfo_ValueParam.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ValueParam proto.InternalMessageInfo
+
+func (m *ValueParam) GetOnu() *Onu {
+	if m != nil {
+		return m.Onu
+	}
+	return nil
+}
+
+func (m *ValueParam) GetValue() common.ValueType_Type {
+	if m != nil {
+		return m.Value
+	}
+	return common.ValueType_EMPTY
+}
+
 type Empty struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -3120,7 +4135,7 @@
 func (m *Empty) String() string { return proto.CompactTextString(m) }
 func (*Empty) ProtoMessage()    {}
 func (*Empty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c072e7aa0dfd74d5, []int{36}
+	return fileDescriptor_c072e7aa0dfd74d5, []int{47}
 }
 
 func (m *Empty) XXX_Unmarshal(b []byte) error {
@@ -3142,8 +4157,11 @@
 var xxx_messageInfo_Empty proto.InternalMessageInfo
 
 func init() {
+	proto.RegisterEnum("openolt.OnuIndication_ActivationFailReason", OnuIndication_ActivationFailReason_name, OnuIndication_ActivationFailReason_value)
 	proto.RegisterEnum("openolt.DeviceInfo_DeviceResourceRanges_Pool_PoolType", DeviceInfo_DeviceResourceRanges_Pool_PoolType_name, DeviceInfo_DeviceResourceRanges_Pool_PoolType_value)
 	proto.RegisterEnum("openolt.DeviceInfo_DeviceResourceRanges_Pool_SharingType", DeviceInfo_DeviceResourceRanges_Pool_SharingType_name, DeviceInfo_DeviceResourceRanges_Pool_SharingType_value)
+	proto.RegisterEnum("openolt.GroupMember_InterfaceType", GroupMember_InterfaceType_name, GroupMember_InterfaceType_value)
+	proto.RegisterEnum("openolt.Group_GroupMembersCommand", Group_GroupMembersCommand_name, Group_GroupMembersCommand_value)
 	proto.RegisterType((*Indication)(nil), "openolt.Indication")
 	proto.RegisterType((*AlarmIndication)(nil), "openolt.AlarmIndication")
 	proto.RegisterType((*OltIndication)(nil), "openolt.OltIndication")
@@ -3156,6 +4174,7 @@
 	proto.RegisterType((*Interface)(nil), "openolt.Interface")
 	proto.RegisterType((*Heartbeat)(nil), "openolt.Heartbeat")
 	proto.RegisterType((*Onu)(nil), "openolt.Onu")
+	proto.RegisterType((*OnuLogicalDistance)(nil), "openolt.OnuLogicalDistance")
 	proto.RegisterType((*OmciMsg)(nil), "openolt.OmciMsg")
 	proto.RegisterType((*OnuPacket)(nil), "openolt.OnuPacket")
 	proto.RegisterType((*UplinkPacket)(nil), "openolt.UplinkPacket")
@@ -3180,211 +4199,291 @@
 	proto.RegisterType((*OnuTransmissionInterferenceWarning)(nil), "openolt.OnuTransmissionInterferenceWarning")
 	proto.RegisterType((*OnuActivationFailureIndication)(nil), "openolt.OnuActivationFailureIndication")
 	proto.RegisterType((*OnuLossOfKeySyncFailureIndication)(nil), "openolt.OnuLossOfKeySyncFailureIndication")
+	proto.RegisterType((*RdiErrorIndication)(nil), "openolt.RdiErrorIndication")
 	proto.RegisterType((*OnuItuPonStatsIndication)(nil), "openolt.OnuItuPonStatsIndication")
 	proto.RegisterType((*OnuProcessingErrorIndication)(nil), "openolt.OnuProcessingErrorIndication")
+	proto.RegisterType((*OnuDeactivationFailureIndication)(nil), "openolt.OnuDeactivationFailureIndication")
+	proto.RegisterType((*OnuRemoteDefectIndication)(nil), "openolt.OnuRemoteDefectIndication")
+	proto.RegisterType((*OnuLossOfGEMChannelDelineationIndication)(nil), "openolt.OnuLossOfGEMChannelDelineationIndication")
+	proto.RegisterType((*OnuPhysicalEquipmentErrorIndication)(nil), "openolt.OnuPhysicalEquipmentErrorIndication")
+	proto.RegisterType((*OnuLossOfAcknowledgementIndication)(nil), "openolt.OnuLossOfAcknowledgementIndication")
+	proto.RegisterType((*OnuDifferentialReachExceededIndication)(nil), "openolt.OnuDifferentialReachExceededIndication")
+	proto.RegisterType((*GroupMember)(nil), "openolt.GroupMember")
+	proto.RegisterType((*Group)(nil), "openolt.Group")
+	proto.RegisterType((*ValueParam)(nil), "openolt.ValueParam")
 	proto.RegisterType((*Empty)(nil), "openolt.Empty")
 }
 
 func init() { proto.RegisterFile("voltha_protos/openolt.proto", fileDescriptor_c072e7aa0dfd74d5) }
 
 var fileDescriptor_c072e7aa0dfd74d5 = []byte{
-	// 3127 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xdd, 0x72, 0x1c, 0x47,
-	0xf5, 0xf7, 0x4a, 0xab, 0x9d, 0xdd, 0xb3, 0x1f, 0x92, 0x5b, 0xd6, 0xb7, 0x62, 0x2b, 0xf3, 0xf7,
-	0x3f, 0x31, 0xa1, 0x62, 0xc5, 0x4e, 0x0a, 0x48, 0xa0, 0x20, 0xb2, 0x24, 0x47, 0x4b, 0x2c, 0xaf,
-	0x18, 0xc9, 0x31, 0x84, 0xa2, 0x26, 0xa3, 0x99, 0xde, 0x55, 0x97, 0x66, 0xa7, 0x27, 0xd3, 0xbd,
-	0xfa, 0x28, 0xee, 0x02, 0xbc, 0x00, 0x29, 0x2e, 0xa0, 0x8a, 0x2b, 0x5e, 0x82, 0x2a, 0x2e, 0x73,
-	0x4b, 0x71, 0xc3, 0x2b, 0x70, 0xc3, 0x3b, 0x70, 0x41, 0xf5, 0xe9, 0x9e, 0xd9, 0x99, 0x5d, 0x49,
-	0xb6, 0x8c, 0x29, 0x6e, 0x54, 0xd3, 0xe7, 0xfc, 0xce, 0xef, 0xf4, 0xe9, 0x3e, 0x7d, 0xfa, 0x63,
-	0x05, 0x2b, 0x27, 0x3c, 0x94, 0x47, 0x9e, 0x1b, 0x27, 0x5c, 0x72, 0xb1, 0xce, 0x63, 0x1a, 0xf1,
-	0x50, 0xde, 0xc7, 0x26, 0xb1, 0x4c, 0x73, 0x79, 0xb5, 0xc7, 0x79, 0x2f, 0xa4, 0xeb, 0x5e, 0xcc,
-	0xd6, 0xbd, 0x28, 0xe2, 0xd2, 0x93, 0x8c, 0x47, 0x42, 0xc3, 0x96, 0xd7, 0x8a, 0x1c, 0x92, 0xfa,
-	0x47, 0xea, 0xbb, 0xcb, 0x42, 0xaa, 0x11, 0xf6, 0x5f, 0xcb, 0x00, 0xed, 0x28, 0x60, 0x3e, 0xda,
-	0x91, 0x07, 0x60, 0xf1, 0x50, 0xba, 0x2c, 0x0a, 0x16, 0x4b, 0x6b, 0xa5, 0x7b, 0xf5, 0x87, 0xf3,
-	0xf7, 0x53, 0xc7, 0x9d, 0x50, 0x0e, 0x81, 0x3b, 0x37, 0x9c, 0x0a, 0x47, 0x01, 0xf9, 0x00, 0xaa,
-	0x2c, 0x92, 0x5d, 0xb4, 0x99, 0x40, 0x9b, 0x85, 0xcc, 0xa6, 0x1d, 0xc9, 0x6e, 0xc1, 0xc8, 0x62,
-	0x5a, 0x42, 0x36, 0xa0, 0x89, 0x56, 0x3c, 0xa6, 0x09, 0x9a, 0x4e, 0xa2, 0xe9, 0x4a, 0xc1, 0xb4,
-	0x13, 0xd3, 0xa4, 0x60, 0x5e, 0x67, 0x43, 0x29, 0xf9, 0x21, 0x34, 0x78, 0x34, 0x70, 0x03, 0x26,
-	0x7c, 0x64, 0x28, 0x23, 0xc3, 0xf2, 0xb0, 0xc3, 0xd1, 0x60, 0x8b, 0x09, 0xbf, 0x40, 0x00, 0x3c,
-	0x13, 0x62, 0xac, 0xd1, 0x00, 0x4d, 0xa7, 0x46, 0x63, 0x8d, 0x06, 0x23, 0xb1, 0xa2, 0x40, 0xc5,
-	0xca, 0xfb, 0x3e, 0x43, 0x9b, 0xca, 0x48, 0xac, 0x9d, 0xbe, 0xcf, 0x8a, 0xb1, 0x72, 0x2d, 0x21,
-	0x1f, 0x80, 0x15, 0x1f, 0xeb, 0x41, 0xb5, 0xd0, 0x68, 0x29, 0x33, 0xda, 0xf3, 0xfc, 0x63, 0x3a,
-	0x32, 0xae, 0xf1, 0x31, 0x8e, 0xeb, 0xf7, 0x00, 0x62, 0x9e, 0x48, 0x57, 0x48, 0x4f, 0x8a, 0xc5,
-	0xea, 0x88, 0xb7, 0x3d, 0x9e, 0xc8, 0x7d, 0x35, 0xd9, 0x42, 0x32, 0x5f, 0xec, 0xdc, 0x70, 0x6a,
-	0xb1, 0x91, 0x08, 0x65, 0xd9, 0x0d, 0xf9, 0xa9, 0xb1, 0xac, 0x8d, 0x58, 0x3e, 0x0e, 0xf9, 0x69,
-	0xd1, 0xb2, 0x6b, 0x24, 0x82, 0x7c, 0x17, 0x6a, 0x5e, 0xe8, 0x25, 0x7d, 0xec, 0x2b, 0xa0, 0xe1,
-	0x62, 0x66, 0xb8, 0xa1, 0x34, 0x85, 0xae, 0x56, 0x3d, 0x23, 0x7a, 0x54, 0x81, 0x72, 0xe0, 0x49,
-	0xcf, 0xfe, 0x67, 0x15, 0xa6, 0x47, 0x70, 0x6a, 0x9c, 0x43, 0x2e, 0x2e, 0xcc, 0xa9, 0x27, 0x5c,
-	0x14, 0x63, 0x0f, 0x51, 0x40, 0xb6, 0xa0, 0x15, 0x9c, 0xb3, 0xa8, 0xe7, 0xf6, 0x3c, 0x11, 0xe7,
-	0x32, 0x6b, 0x35, 0xb3, 0xdc, 0x52, 0xea, 0x4f, 0x3c, 0x11, 0x17, 0xec, 0x1b, 0x41, 0x4e, 0xac,
-	0x72, 0x4c, 0x4d, 0xf0, 0x30, 0xa2, 0xd1, 0x1c, 0xeb, 0x44, 0x83, 0xf1, 0xa0, 0xea, 0x7c, 0x28,
-	0x25, 0xcf, 0xe1, 0x96, 0xa2, 0x10, 0xd2, 0x4b, 0xe4, 0x20, 0x76, 0xbb, 0x1e, 0x0b, 0x73, 0xb9,
-	0x76, 0x37, 0xcf, 0xb4, 0xaf, 0x31, 0x8f, 0x3d, 0x16, 0x0e, 0x12, 0x5a, 0xa0, 0xbc, 0xc9, 0x0b,
-	0x6a, 0x45, 0xfc, 0x39, 0xcc, 0x23, 0x31, 0xeb, 0x45, 0x5e, 0xe8, 0x06, 0xb4, 0x97, 0x78, 0x01,
-	0xcd, 0xe5, 0xe2, 0xff, 0x15, 0xa8, 0x11, 0xb5, 0xa5, 0x41, 0x05, 0xe6, 0x59, 0x3e, 0xae, 0x25,
-	0x3f, 0x87, 0x05, 0x5c, 0x18, 0x09, 0xeb, 0x4a, 0x97, 0x77, 0xdd, 0x53, 0x16, 0x05, 0xfc, 0x34,
-	0x97, 0xb4, 0x05, 0xf2, 0x2d, 0x05, 0xeb, 0x74, 0x9f, 0x23, 0x68, 0x8c, 0x7c, 0x54, 0x4b, 0x0e,
-	0x40, 0x45, 0xe3, 0x86, 0x5c, 0x08, 0x37, 0x5b, 0x0b, 0x3a, 0xad, 0xdf, 0xce, 0xd3, 0x3e, 0xe1,
-	0x42, 0x74, 0xba, 0x6a, 0x51, 0x6c, 0x1e, 0x79, 0x51, 0x44, 0xc3, 0x02, 0x75, 0x8b, 0x1b, 0x84,
-	0x59, 0x22, 0xe9, 0x38, 0x63, 0x28, 0x62, 0x38, 0xce, 0xd5, 0x0b, 0xc6, 0x59, 0x63, 0x2e, 0x1d,
-	0xe7, 0xa1, 0x5a, 0x11, 0x77, 0x74, 0x91, 0x90, 0xec, 0x54, 0xf7, 0x54, 0xaf, 0x86, 0x6f, 0xe7,
-	0x09, 0x0f, 0x12, 0x2f, 0x12, 0x7d, 0x26, 0x04, 0xe3, 0x51, 0x3b, 0x92, 0x34, 0xe9, 0xd2, 0x84,
-	0x46, 0x3e, 0x7d, 0xee, 0x25, 0x11, 0x8b, 0x7a, 0xa6, 0x6a, 0x1c, 0xb0, 0x53, 0xec, 0xe9, 0x17,
-	0x7a, 0x70, 0x3d, 0x5f, 0xb2, 0x13, 0xf4, 0x3b, 0xec, 0x2c, 0x8c, 0x8f, 0xc2, 0x46, 0x06, 0xbb,
-	0xa8, 0xbf, 0x2a, 0xe6, 0x22, 0x42, 0x7b, 0x58, 0x54, 0x1e, 0xe2, 0x84, 0xfb, 0x54, 0x08, 0xb5,
-	0x0a, 0x68, 0x92, 0x70, 0x5d, 0x25, 0xeb, 0xe8, 0xe2, 0xff, 0xf3, 0x2e, 0xf6, 0x32, 0xdc, 0xb6,
-	0x82, 0x15, 0x1c, 0xcc, 0xf1, 0x8b, 0xf4, 0x84, 0xc2, 0xd2, 0x70, 0x0e, 0xbb, 0xae, 0x38, 0x8f,
-	0xfc, 0x61, 0x14, 0x0d, 0x74, 0xf1, 0xce, 0xf8, 0x5c, 0x7e, 0x4a, 0xcf, 0xf7, 0xcf, 0x23, 0xff,
-	0xb2, 0x40, 0x34, 0x28, 0x45, 0x28, 0x37, 0xcf, 0x60, 0x0e, 0x0b, 0xac, 0x1c, 0xb8, 0x31, 0x8f,
-	0x74, 0x39, 0x42, 0x17, 0x4d, 0x74, 0xf1, 0x66, 0xa1, 0xdc, 0xca, 0xc1, 0x1e, 0x8f, 0xb0, 0x0a,
-	0x8d, 0x4d, 0x69, 0x51, 0x97, 0xd5, 0x9a, 0xfb, 0xd0, 0x2c, 0xec, 0x49, 0xe4, 0x0d, 0x00, 0xdc,
-	0x4e, 0x94, 0x23, 0x8a, 0xb5, 0xa6, 0xe6, 0xd4, 0x94, 0x44, 0x99, 0x52, 0x7b, 0x07, 0x5a, 0xc5,
-	0xfd, 0x88, 0x2c, 0x80, 0xa5, 0xb7, 0x2e, 0x5d, 0x99, 0x2c, 0xa7, 0x82, 0xdb, 0x53, 0x30, 0xc2,
-	0x34, 0x31, 0xca, 0x74, 0x04, 0x37, 0xc7, 0x36, 0x97, 0xcb, 0xc9, 0x3e, 0x82, 0xa6, 0xa0, 0x09,
-	0xf3, 0x42, 0x37, 0x1a, 0xf4, 0x0f, 0x69, 0x62, 0x6a, 0xd9, 0x5c, 0x16, 0xfe, 0x3e, 0x6a, 0x9f,
-	0xa2, 0xd2, 0x69, 0x88, 0x5c, 0xcb, 0xfe, 0x4b, 0x09, 0x9a, 0x85, 0xcd, 0xe8, 0x72, 0x37, 0x73,
-	0x50, 0xc1, 0xd1, 0xd6, 0xb5, 0xd2, 0x72, 0xa6, 0xd4, 0xc8, 0x8d, 0x86, 0x32, 0x39, 0x12, 0x0a,
-	0xb9, 0x03, 0x75, 0x2f, 0xe8, 0xb3, 0xc8, 0xe8, 0xa7, 0x50, 0x0f, 0x28, 0xd2, 0x80, 0xb1, 0xde,
-	0x97, 0x5f, 0xbe, 0xf7, 0x5f, 0x00, 0x19, 0xdf, 0xc6, 0x09, 0x81, 0xb2, 0x3c, 0x8f, 0xd3, 0x09,
-	0xc2, 0xef, 0x7c, 0x54, 0x13, 0x57, 0xcc, 0xc4, 0x68, 0xf7, 0x6d, 0x07, 0x5a, 0xc5, 0x7d, 0xf7,
-	0xda, 0xe3, 0x33, 0x03, 0x93, 0xf1, 0xb1, 0x44, 0xe6, 0x86, 0xa3, 0x3e, 0xed, 0x6f, 0x4a, 0x30,
-	0x33, 0xba, 0x2f, 0x93, 0x15, 0xa8, 0x21, 0x2d, 0xf6, 0x5c, 0x8f, 0x12, 0x1e, 0x7b, 0x0e, 0x46,
-	0x7a, 0x3f, 0x96, 0x47, 0x3d, 0xda, 0xc7, 0x6d, 0x3c, 0xf3, 0x5b, 0x33, 0x92, 0x76, 0xa0, 0xec,
-	0x70, 0xa3, 0x66, 0x7a, 0x6b, 0xb2, 0x9c, 0x8a, 0x6a, 0x6a, 0x05, 0x1a, 0x45, 0x1c, 0x2b, 0xb6,
-	0xe5, 0x54, 0x54, 0xf3, 0x29, 0x27, 0xf3, 0x50, 0xf1, 0x39, 0x3f, 0x66, 0x14, 0x4b, 0x6e, 0xc5,
-	0x31, 0xad, 0x34, 0x8a, 0xf2, 0x30, 0x8a, 0xbb, 0x50, 0xd3, 0xc5, 0xcc, 0xf3, 0x2f, 0xef, 0xa0,
-	0xfd, 0x03, 0xa8, 0xed, 0x50, 0x2f, 0x91, 0x87, 0xd4, 0x93, 0x64, 0x1d, 0x66, 0x8f, 0xd2, 0x86,
-	0x2e, 0xc5, 0x72, 0x90, 0x50, 0x63, 0x41, 0x32, 0xd5, 0x7e, 0xaa, 0xb1, 0x7f, 0x55, 0x82, 0xc9,
-	0x4e, 0x34, 0xb8, 0xf6, 0x98, 0x8f, 0xe5, 0xd4, 0xe4, 0x4b, 0xe7, 0x14, 0x46, 0xca, 0x74, 0x16,
-	0x5a, 0x8e, 0xfa, 0xb4, 0x3f, 0x05, 0x4b, 0xe5, 0xc0, 0xae, 0xe8, 0xbd, 0x86, 0xc9, 0xff, 0x4d,
-	0x09, 0x6a, 0xaa, 0xa8, 0xe2, 0xfc, 0x5f, 0x9b, 0x2f, 0x37, 0x6f, 0xe5, 0xc2, 0xbc, 0x15, 0x13,
-	0x61, 0x6a, 0x34, 0x11, 0xc6, 0xfb, 0xf1, 0x21, 0x34, 0x9e, 0xc5, 0x21, 0x8b, 0x8e, 0x5f, 0xd4,
-	0x13, 0x63, 0x3a, 0x31, 0x34, 0xfd, 0x6d, 0x0d, 0x60, 0x8b, 0x9e, 0x30, 0x9f, 0xb6, 0xa3, 0x2e,
-	0xa6, 0xcc, 0x09, 0x8d, 0x02, 0x9e, 0x98, 0x05, 0x67, 0x5a, 0xe4, 0x16, 0x4c, 0xf5, 0x79, 0x40,
-	0x43, 0x53, 0xde, 0x74, 0x83, 0x7c, 0x0b, 0x66, 0x8e, 0xbc, 0x24, 0x38, 0xf5, 0x12, 0xea, 0x9e,
-	0xd0, 0x44, 0xed, 0x89, 0x66, 0xd5, 0x4d, 0xa7, 0xf2, 0xcf, 0xb4, 0x58, 0x41, 0xbb, 0x2c, 0xe9,
-	0x17, 0xa0, 0x65, 0x0d, 0x4d, 0xe5, 0x29, 0x74, 0x05, 0x6a, 0x01, 0xf6, 0x48, 0xf5, 0x7f, 0x46,
-	0xaf, 0x1e, 0x2d, 0x68, 0x07, 0xe4, 0x3d, 0xb8, 0x65, 0x94, 0xc5, 0xa4, 0xb8, 0x89, 0x38, 0xa2,
-	0x75, 0xf9, 0x8c, 0x50, 0x74, 0x6a, 0x43, 0x51, 0x83, 0x27, 0x70, 0xbf, 0xb2, 0x9c, 0x6a, 0xcc,
-	0x23, 0x75, 0x26, 0x16, 0xe4, 0x36, 0x80, 0xba, 0xe7, 0x44, 0x3c, 0xe4, 0xbd, 0xf3, 0xb4, 0xa0,
-	0x0d, 0x25, 0x64, 0x4d, 0x9f, 0x08, 0x58, 0xa0, 0x4f, 0x75, 0x66, 0x81, 0x01, 0x4e, 0x20, 0x1e,
-	0xd2, 0xc8, 0x2a, 0x80, 0x41, 0x50, 0x73, 0xb6, 0xb1, 0x9c, 0x2a, 0xea, 0xb7, 0xa3, 0x80, 0xdc,
-	0x85, 0x96, 0x17, 0x86, 0xdc, 0x1f, 0x32, 0x54, 0x11, 0xd1, 0x40, 0x69, 0xca, 0xb1, 0x06, 0x8d,
-	0x0c, 0x45, 0xcd, 0xb9, 0xc3, 0x72, 0xc0, 0x60, 0x14, 0xcf, 0x3d, 0x98, 0x19, 0xa6, 0x84, 0x61,
-	0x02, 0x44, 0xb5, 0xb2, 0xc4, 0xd0, 0x5c, 0x77, 0xa1, 0x95, 0x43, 0x52, 0x73, 0x0c, 0xb0, 0x9c,
-	0x46, 0x86, 0x53, 0x7c, 0x36, 0x34, 0x4d, 0x31, 0x31, 0x64, 0x4d, 0x04, 0xd5, 0x75, 0x49, 0xd1,
-	0x4c, 0xb7, 0xa1, 0x9e, 0x62, 0x14, 0x4d, 0x4b, 0xe7, 0xa1, 0x46, 0x28, 0x8e, 0x8f, 0xa1, 0x92,
-	0x78, 0x51, 0x8f, 0x8a, 0xc5, 0xe9, 0xb5, 0xc9, 0x7b, 0xf5, 0x87, 0xf7, 0x86, 0xe7, 0xed, 0x2c,
-	0xa1, 0xcc, 0xa7, 0x43, 0x05, 0x1f, 0x24, 0x3e, 0x75, 0x10, 0xef, 0x18, 0xbb, 0xe5, 0xdf, 0x95,
-	0xe1, 0xd6, 0x45, 0x00, 0xb2, 0x94, 0x5e, 0x13, 0x03, 0xb1, 0x58, 0x5a, 0x9b, 0xbc, 0x67, 0x99,
-	0xbb, 0x60, 0x30, 0x3a, 0x63, 0x13, 0x63, 0x33, 0xb6, 0x09, 0x53, 0x31, 0xe7, 0xa1, 0x58, 0x9c,
-	0xc4, 0x4e, 0xbd, 0xfb, 0xb2, 0x9d, 0xba, 0xbf, 0xc7, 0x79, 0xe8, 0x68, 0xdb, 0xe5, 0x7f, 0x4d,
-	0x40, 0x59, 0xb5, 0xc9, 0x8f, 0x73, 0xdb, 0x4f, 0xeb, 0xe1, 0x77, 0xae, 0x45, 0x86, 0x7f, 0x54,
-	0xc9, 0x37, 0xdb, 0xd6, 0x3e, 0x58, 0xe2, 0xc8, 0x4b, 0x58, 0xd4, 0xc3, 0x6e, 0xb7, 0x1e, 0x7e,
-	0x78, 0x3d, 0xba, 0x7d, 0x6d, 0x8c, 0x8c, 0x29, 0x93, 0x5a, 0x98, 0x7a, 0x02, 0xf5, 0x9e, 0xa0,
-	0x1b, 0x6a, 0x9d, 0x53, 0x73, 0xf1, 0xb0, 0x1c, 0xf5, 0x69, 0x6f, 0x40, 0x35, 0xed, 0x0e, 0x01,
-	0xa8, 0x74, 0x9e, 0x3e, 0x73, 0xdb, 0x5b, 0x33, 0x37, 0x48, 0x03, 0xaa, 0x1b, 0x4f, 0x9e, 0x74,
-	0x36, 0x55, 0xab, 0x44, 0x5a, 0x00, 0x9f, 0x6c, 0xef, 0xee, 0x75, 0x9c, 0x03, 0xd5, 0x9e, 0x20,
-	0x75, 0xb0, 0x1e, 0x3f, 0xe9, 0x3c, 0x57, 0x8d, 0x49, 0xfb, 0x08, 0xea, 0xb9, 0x2e, 0x90, 0x79,
-	0x20, 0x5b, 0xdb, 0x5b, 0xed, 0xcd, 0x8d, 0x83, 0xed, 0x2d, 0x77, 0x6f, 0xdb, 0x71, 0xdb, 0x4f,
-	0x0f, 0x1e, 0xcf, 0xdc, 0x20, 0x77, 0x60, 0x65, 0x7f, 0x67, 0xc3, 0xd9, 0xde, 0x72, 0x1f, 0xfd,
-	0xcc, 0xdd, 0x78, 0xf2, 0x04, 0xe5, 0xf8, 0x71, 0xb0, 0xbd, 0xb9, 0x33, 0x53, 0x22, 0x6b, 0xb0,
-	0x7a, 0x01, 0x60, 0x7f, 0x63, 0x77, 0x5b, 0x23, 0x26, 0xec, 0x5f, 0x4f, 0x02, 0x6c, 0x86, 0x9e,
-	0x10, 0xac, 0xcb, 0x68, 0x82, 0xf5, 0xd3, 0x95, 0x71, 0x56, 0xcd, 0xa6, 0xf8, 0x41, 0xcc, 0x02,
-	0x32, 0x0b, 0x53, 0xdc, 0x3d, 0xc9, 0xaa, 0x6a, 0x99, 0x7f, 0xc6, 0xb0, 0xd6, 0x32, 0x8d, 0x35,
-	0x03, 0xc2, 0x52, 0x2c, 0x43, 0xac, 0x1e, 0x92, 0x32, 0x53, 0xd8, 0x05, 0xb0, 0xb8, 0x1b, 0x1f,
-	0x32, 0x29, 0x4c, 0x91, 0xad, 0xf0, 0x3d, 0xd5, 0xc2, 0xfa, 0x69, 0x14, 0x66, 0x47, 0x65, 0x5a,
-	0xb1, 0x04, 0x55, 0x2a, 0x8f, 0xf4, 0xbe, 0xae, 0x97, 0xba, 0x45, 0xe5, 0x51, 0xba, 0xad, 0x07,
-	0x42, 0xba, 0x7d, 0xcf, 0xc7, 0x25, 0xde, 0x70, 0x2a, 0x81, 0x90, 0xbb, 0x9e, 0xaf, 0x14, 0x22,
-	0xf1, 0x51, 0x51, 0xd3, 0x0a, 0x91, 0xf8, 0x4a, 0xa1, 0x92, 0x3c, 0xd6, 0xaf, 0x2d, 0x66, 0x2d,
-	0x5b, 0x2c, 0xde, 0xc3, 0x17, 0x9b, 0x39, 0x50, 0xd6, 0x2e, 0x8b, 0xcd, 0xe2, 0x9d, 0x0a, 0x84,
-	0x6c, 0xc7, 0x4a, 0xac, 0xa8, 0x58, 0x6c, 0xea, 0xd8, 0x94, 0x48, 0xfc, 0x76, 0xac, 0x88, 0x94,
-	0x58, 0xad, 0x6e, 0xb3, 0x8e, 0x95, 0x47, 0x55, 0xe0, 0x94, 0x4a, 0x11, 0xa1, 0x4a, 0x2f, 0x60,
-	0xd5, 0x4b, 0x54, 0xad, 0x41, 0x23, 0x3e, 0x96, 0xae, 0xf4, 0x7a, 0x3a, 0x9e, 0x69, 0xbd, 0x94,
-	0xe2, 0x63, 0x79, 0xe0, 0xe1, 0x0c, 0xdb, 0xbf, 0x84, 0x9a, 0xba, 0x70, 0xf0, 0x68, 0xb3, 0x8f,
-	0x15, 0xc3, 0x0b, 0x02, 0x97, 0x0f, 0x24, 0x4d, 0x94, 0x11, 0xce, 0x45, 0xd5, 0xa9, 0x7b, 0x41,
-	0xd0, 0x51, 0xb2, 0x03, 0xaf, 0xa7, 0xaa, 0x54, 0x42, 0xfb, 0xfc, 0x84, 0xe6, 0x60, 0x13, 0x08,
-	0x6b, 0x69, 0x79, 0x86, 0x5c, 0x83, 0x86, 0x4c, 0xbc, 0xd8, 0x95, 0xdc, 0x3d, 0xe2, 0x42, 0x67,
-	0x6f, 0xd5, 0x01, 0x25, 0x3b, 0xe0, 0x3b, 0x5c, 0x48, 0xfb, 0xcf, 0x25, 0xa8, 0x68, 0xef, 0xe4,
-	0x2e, 0x4c, 0xfa, 0xfd, 0xf4, 0x3d, 0x80, 0x0c, 0x9f, 0x18, 0xd2, 0xbe, 0x39, 0x4a, 0x7d, 0x71,
-	0x3a, 0xe4, 0xa6, 0x78, 0xb2, 0x30, 0xc5, 0xc3, 0x9c, 0x2a, 0x8f, 0xe4, 0x94, 0xce, 0x93, 0xa9,
-	0x62, 0x9e, 0x5c, 0x9c, 0x0e, 0xc3, 0x64, 0xb3, 0x72, 0xc9, 0x66, 0xff, 0x71, 0x12, 0xca, 0x8f,
-	0x43, 0x7e, 0x8a, 0xd5, 0xdf, 0x57, 0xf7, 0x29, 0x37, 0xbf, 0x1d, 0x4f, 0x3b, 0x0d, 0x2d, 0x6d,
-	0x5f, 0x74, 0x3c, 0x98, 0x4e, 0x8f, 0x07, 0x73, 0x50, 0x19, 0x44, 0x4c, 0x89, 0xeb, 0x5a, 0x3c,
-	0x88, 0xd8, 0x55, 0xc7, 0xc0, 0x15, 0xc0, 0xda, 0xac, 0x27, 0x53, 0x6f, 0xad, 0x55, 0x25, 0xc0,
-	0xec, 0x5c, 0x82, 0x6a, 0xba, 0xc3, 0x60, 0xae, 0x4d, 0x3b, 0x96, 0xd9, 0x5d, 0xc8, 0x5b, 0x30,
-	0x1d, 0x51, 0x79, 0xca, 0x93, 0xe3, 0xac, 0x97, 0x53, 0x88, 0x68, 0x1a, 0x71, 0xfb, 0xa2, 0xe3,
-	0x69, 0x05, 0x21, 0xb9, 0x53, 0xc9, 0xfb, 0x00, 0x7e, 0xb6, 0x64, 0xcd, 0x1d, 0x7f, 0x36, 0x9b,
-	0xab, 0xe1, 0x6a, 0x76, 0x72, 0x30, 0xf2, 0x36, 0x54, 0x3c, 0x9c, 0x45, 0x73, 0x77, 0x9f, 0x1e,
-	0x99, 0x5c, 0xc7, 0xa8, 0xc9, 0x32, 0x54, 0xe3, 0x84, 0xf1, 0x84, 0xc9, 0x73, 0x5c, 0x45, 0xd3,
-	0x4e, 0xd6, 0xce, 0x1d, 0x73, 0x1b, 0x85, 0x63, 0x6e, 0xee, 0x7c, 0xd5, 0xcc, 0x9f, 0xaf, 0xec,
-	0x03, 0x68, 0x8c, 0x9e, 0x10, 0xf4, 0x31, 0x27, 0x9d, 0xa1, 0x86, 0x53, 0xd5, 0x82, 0x76, 0x40,
-	0xde, 0x86, 0x69, 0xa3, 0x14, 0x31, 0xf5, 0x59, 0x97, 0xf9, 0xe6, 0xf8, 0xd4, 0xd2, 0xe2, 0x7d,
-	0x23, 0xb5, 0xff, 0x56, 0x86, 0x56, 0xf1, 0xa1, 0xed, 0xf2, 0x73, 0xd8, 0x12, 0x54, 0x93, 0x33,
-	0xf7, 0xf0, 0x5c, 0x52, 0x81, 0x6c, 0x15, 0xc7, 0x4a, 0xce, 0x1e, 0xa9, 0xa6, 0x1a, 0xe6, 0xe4,
-	0xcc, 0x8d, 0xf1, 0x20, 0xa7, 0x93, 0xb6, 0xe2, 0xd4, 0x92, 0x33, 0x7d, 0xb2, 0x13, 0xb8, 0xc4,
-	0xce, 0xdc, 0x81, 0xef, 0xa9, 0x55, 0x6d, 0x40, 0x65, 0x04, 0xb5, 0x92, 0xb3, 0x67, 0x4a, 0x5c,
-	0x44, 0xf6, 0x0b, 0xc8, 0xa9, 0x14, 0xb9, 0x3b, 0x8e, 0x3c, 0x2c, 0x20, 0x2b, 0x29, 0xf2, 0xd1,
-	0x38, 0x52, 0xbf, 0x30, 0xa4, 0x48, 0x2b, 0x45, 0xe2, 0x8b, 0x41, 0x8a, 0x5c, 0x82, 0xaa, 0x4c,
-	0x23, 0xac, 0xea, 0x08, 0xe5, 0x30, 0x42, 0x39, 0x8c, 0xb0, 0xa6, 0x23, 0x94, 0xf9, 0x08, 0xe5,
-	0x68, 0x84, 0xa0, 0x7d, 0xc8, 0xb1, 0x08, 0xe5, 0x68, 0x84, 0xf5, 0x14, 0xb9, 0x3b, 0x8e, 0x2c,
-	0x46, 0xd8, 0x48, 0x91, 0x8f, 0xc6, 0x91, 0xc5, 0x08, 0x9b, 0x29, 0xb2, 0x10, 0xa1, 0x0d, 0xcd,
-	0xe4, 0xcc, 0xf5, 0x13, 0x5f, 0xa3, 0x05, 0xd6, 0xd7, 0x8a, 0x53, 0x4f, 0xce, 0x36, 0x13, 0x1f,
-	0x91, 0x18, 0xea, 0x21, 0x8b, 0x53, 0xc0, 0xb4, 0x0e, 0xf5, 0x90, 0xc5, 0x46, 0xbd, 0x0a, 0x35,
-	0xc9, 0xfa, 0x54, 0x48, 0xaf, 0x1f, 0xe3, 0x49, 0xd7, 0x72, 0x86, 0x02, 0x75, 0x9d, 0x6f, 0x15,
-	0xdf, 0x5f, 0xf3, 0x8b, 0xbf, 0x54, 0x58, 0xfc, 0xaf, 0x9e, 0x50, 0xaf, 0x3e, 0x51, 0x57, 0xf7,
-	0xfe, 0x63, 0x68, 0x16, 0x1e, 0x6c, 0x2f, 0x5f, 0x0c, 0xf3, 0x50, 0x51, 0x17, 0xf6, 0x81, 0x30,
-	0xa7, 0x39, 0xd3, 0xb2, 0x7f, 0x01, 0xb3, 0x17, 0x3c, 0xdc, 0x5e, 0xfb, 0x9a, 0x35, 0xa4, 0x9f,
-	0x2c, 0xd0, 0xff, 0x69, 0x02, 0xc8, 0xf8, 0x9b, 0xee, 0xab, 0x3c, 0x99, 0x84, 0x5c, 0xb8, 0x05,
-	0x17, 0xb5, 0x90, 0x8b, 0x7d, 0x14, 0x68, 0xf5, 0x61, 0xaa, 0x2e, 0xa7, 0xea, 0x43, 0xa3, 0xbe,
-	0x07, 0x33, 0x21, 0x8f, 0x7d, 0xb7, 0xcf, 0x44, 0xc6, 0xa1, 0x6f, 0x21, 0x2d, 0x25, 0xdf, 0x65,
-	0x22, 0x25, 0x7a, 0x00, 0x73, 0x06, 0x69, 0x12, 0x2e, 0x85, 0x57, 0xf4, 0xcd, 0x47, 0xc3, 0x75,
-	0xe2, 0x19, 0x93, 0x3b, 0x50, 0x0f, 0x79, 0x97, 0xa5, 0x40, 0x4b, 0x6f, 0xf0, 0x4a, 0x64, 0x00,
-	0x6f, 0x42, 0x23, 0xe4, 0x5e, 0x3f, 0x43, 0x54, 0x11, 0x51, 0x47, 0x99, 0x86, 0xd8, 0x14, 0x56,
-	0xae, 0x78, 0xae, 0x7e, 0x6d, 0x93, 0xf1, 0xfb, 0x12, 0x2c, 0x5f, 0xfe, 0x76, 0xfd, 0xba, 0xdc,
-	0x90, 0xf7, 0x61, 0x9e, 0x45, 0xea, 0xfa, 0x49, 0xdd, 0x43, 0x26, 0xcd, 0x38, 0x26, 0x9e, 0xa4,
-	0xe6, 0x14, 0x30, 0x6b, 0xb4, 0x8f, 0x98, 0xc4, 0x81, 0x74, 0x3c, 0x49, 0xed, 0xaf, 0x75, 0xdf,
-	0x2e, 0x79, 0xfa, 0x7e, 0x6d, 0x7d, 0xbb, 0x05, 0x53, 0xf8, 0x08, 0x9f, 0x1e, 0x48, 0xb0, 0xa1,
-	0xd8, 0x23, 0x7a, 0xea, 0xd2, 0x2f, 0xd3, 0x23, 0x49, 0x25, 0xa2, 0xa7, 0xdb, 0x5f, 0x06, 0xf6,
-	0x11, 0xdc, 0xbe, 0xfa, 0xe1, 0xfc, 0xb5, 0xcd, 0xcd, 0x1f, 0x4a, 0x3a, 0x07, 0x2e, 0x79, 0x4a,
-	0xff, 0xdf, 0x4e, 0xce, 0x57, 0x25, 0xb0, 0x5f, 0xfc, 0x2c, 0xff, 0xdf, 0x9d, 0x24, 0xfb, 0x4b,
-	0x9c, 0x8b, 0x2b, 0x9e, 0xef, 0xaf, 0xed, 0xff, 0x0e, 0xd4, 0xf1, 0x8d, 0x3d, 0xa1, 0x9e, 0x30,
-	0x8f, 0x2a, 0x96, 0x03, 0x4a, 0xe4, 0xa0, 0xc4, 0x3e, 0x86, 0x37, 0x5f, 0xf8, 0xd6, 0xfe, 0xda,
-	0x32, 0x80, 0xc1, 0xe2, 0x65, 0xaf, 0xee, 0xaf, 0x52, 0x2f, 0x93, 0x80, 0xa5, 0x5b, 0xa2, 0x0e,
-	0xac, 0x96, 0x04, 0x4c, 0x6f, 0x89, 0xf6, 0x53, 0x58, 0xbd, 0xea, 0x67, 0x8a, 0xeb, 0xba, 0xb3,
-	0x2d, 0x98, 0xda, 0xee, 0xc7, 0xf2, 0xfc, 0xe1, 0x37, 0x4d, 0xb0, 0x3a, 0xfa, 0x70, 0x49, 0xb6,
-	0x00, 0xb6, 0x98, 0xf0, 0x0e, 0x43, 0xda, 0x09, 0x25, 0x69, 0x65, 0x87, 0x4e, 0x44, 0x2e, 0x8f,
-	0xb4, 0xed, 0xf9, 0xaf, 0xfe, 0xfe, 0x8f, 0xaf, 0x27, 0x66, 0xec, 0xfa, 0xfa, 0xc9, 0x83, 0x75,
-	0x63, 0xf7, 0x51, 0xe9, 0x1d, 0xf2, 0x18, 0xea, 0x0e, 0xa5, 0xd1, 0xcb, 0xd2, 0x2c, 0x20, 0xcd,
-	0x4d, 0xbb, 0xa1, 0x68, 0x52, 0x43, 0xc5, 0xb3, 0x0d, 0x75, 0x93, 0x3a, 0xb4, 0x13, 0x0d, 0x48,
-	0x23, 0xff, 0x4b, 0xc7, 0x18, 0xcb, 0x22, 0xb2, 0x10, 0xbb, 0xa9, 0x58, 0xb6, 0xb5, 0xf3, 0x68,
-	0xa0, 0x68, 0x76, 0xa0, 0xb9, 0x45, 0xbd, 0x97, 0x26, 0x5a, 0x42, 0xa2, 0x59, 0xbb, 0x95, 0x8b,
-	0xca, 0x30, 0x6d, 0x42, 0x6d, 0x8b, 0x86, 0xf4, 0xda, 0xdd, 0xc9, 0x8c, 0x14, 0x49, 0x1b, 0xc0,
-	0x3c, 0xb4, 0x76, 0x06, 0x92, 0xcc, 0x14, 0x7e, 0xf9, 0xde, 0x15, 0xbd, 0xab, 0xfb, 0x33, 0xb4,
-	0x54, 0x54, 0x1d, 0x68, 0x64, 0xaf, 0xac, 0x8a, 0x8c, 0x14, 0x7e, 0xd1, 0x42, 0xf1, 0x18, 0xdd,
-	0x0a, 0xd2, 0xcd, 0xd9, 0x33, 0x48, 0x97, 0xb3, 0x56, 0x84, 0x3f, 0x85, 0xe9, 0xfc, 0x7b, 0xa9,
-	0xe2, 0x1c, 0x3e, 0x27, 0xe7, 0x35, 0x63, 0xb4, 0xb7, 0x91, 0x76, 0xd1, 0x9e, 0x55, 0xb4, 0x23,
-	0x1c, 0x8a, 0xf9, 0x63, 0xb0, 0xd4, 0x91, 0x6d, 0x23, 0x08, 0x48, 0xb3, 0xf0, 0x23, 0xfa, 0xd5,
-	0x59, 0x65, 0x6c, 0x74, 0x56, 0x81, 0x6a, 0x39, 0x78, 0x5f, 0x7e, 0x11, 0x49, 0x61, 0xd0, 0x86,
-	0x66, 0x8a, 0x67, 0x1f, 0x5a, 0xd9, 0x63, 0xfd, 0xe6, 0x11, 0xf5, 0x8f, 0xc7, 0x12, 0x74, 0x38,
-	0x8c, 0x19, 0xd0, 0x7e, 0x03, 0x09, 0x17, 0x6c, 0xa2, 0x08, 0x8b, 0xf6, 0x8a, 0x74, 0x17, 0xea,
-	0x3a, 0xe7, 0xf6, 0x78, 0xd4, 0xee, 0xe6, 0x26, 0x22, 0xfb, 0xf5, 0x60, 0xac, 0x8b, 0xcb, 0xc8,
-	0x78, 0xcb, 0x9e, 0x1e, 0x26, 0x2c, 0x1a, 0x9b, 0x89, 0x35, 0x99, 0xf7, 0xf2, 0x7c, 0x85, 0x89,
-	0xcd, 0x5b, 0x2b, 0x42, 0x07, 0x9a, 0x9f, 0x50, 0x99, 0x7b, 0xcf, 0x1e, 0x8d, 0x79, 0xf6, 0x82,
-	0x27, 0x37, 0x7b, 0x15, 0x29, 0xe7, 0xed, 0x9b, 0x8a, 0xb2, 0x60, 0xaf, 0x38, 0x7f, 0x04, 0x15,
-	0x87, 0x1e, 0x72, 0xfe, 0xe2, 0x15, 0x3e, 0x87, 0x3c, 0xd3, 0x36, 0xe8, 0x15, 0xae, 0x6c, 0x14,
-	0xc1, 0x33, 0xb8, 0xb9, 0xc9, 0xc3, 0x90, 0xfa, 0xf9, 0xab, 0xe1, 0x8b, 0xb8, 0xd6, 0x90, 0x6b,
-	0xd9, 0x9e, 0x53, 0x5c, 0x63, 0xe6, 0x8a, 0x36, 0x81, 0x85, 0xcd, 0x84, 0x7a, 0x92, 0x1e, 0x24,
-	0x5e, 0xb7, 0xcb, 0xfc, 0x7d, 0xff, 0x88, 0x06, 0x83, 0x90, 0x26, 0x82, 0xdc, 0xb9, 0x5f, 0xf8,
-	0xe7, 0x9d, 0x31, 0xc0, 0x98, 0xb7, 0xb7, 0xd0, 0xdb, 0x9a, 0xbd, 0x82, 0xde, 0x2e, 0x66, 0x35,
-	0x3e, 0x75, 0x86, 0xbd, 0x6e, 0x9f, 0x97, 0xb0, 0x2a, 0x9f, 0x5d, 0x98, 0x2d, 0xf4, 0xe8, 0x27,
-	0x03, 0x3a, 0xa0, 0x82, 0xac, 0x5c, 0xe8, 0x4f, 0x2b, 0xc7, 0x7c, 0xd9, 0xe8, 0x6b, 0xd5, 0x5e,
-	0x18, 0x8b, 0x4f, 0x1b, 0x18, 0x3f, 0x85, 0x5e, 0xfc, 0xc7, 0x7e, 0x2e, 0x60, 0x53, 0x7e, 0xbe,
-	0x0f, 0x33, 0x7a, 0x19, 0xe4, 0x76, 0xb5, 0xcb, 0xd3, 0x74, 0x08, 0xb2, 0x6f, 0xbc, 0x57, 0x7a,
-	0xf4, 0xe0, 0xf3, 0xf5, 0x1e, 0x93, 0x47, 0x83, 0xc3, 0xfb, 0x3e, 0xef, 0xe3, 0xbf, 0x79, 0xf9,
-	0x3c, 0x09, 0xd6, 0xf5, 0x7f, 0x6e, 0xbd, 0x6b, 0xfe, 0x73, 0xeb, 0xe4, 0xe1, 0x7a, 0x8f, 0xa7,
-	0xff, 0x03, 0xb6, 0x57, 0x3a, 0xac, 0xa0, 0xfc, 0xfd, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x3c,
-	0x63, 0xa1, 0x96, 0x25, 0x26, 0x00, 0x00,
+	// 4245 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0xcd, 0x73, 0x23, 0x49,
+	0x56, 0x6f, 0xd9, 0xb2, 0x24, 0x3f, 0x7d, 0x58, 0x4e, 0xb7, 0xbb, 0xfd, 0xd1, 0xd3, 0xed, 0xa9,
+	0x69, 0x66, 0x7a, 0x87, 0x19, 0x7b, 0xba, 0x67, 0x63, 0x61, 0x86, 0x05, 0x46, 0xb6, 0xd4, 0xb6,
+	0x18, 0xdb, 0x12, 0x25, 0x75, 0x37, 0xcc, 0xc6, 0x44, 0x6d, 0xb9, 0x2a, 0x25, 0xd7, 0xba, 0x54,
+	0x59, 0x53, 0x95, 0xf2, 0x07, 0xc7, 0x0d, 0x16, 0x2e, 0x9c, 0x98, 0x80, 0x08, 0xb8, 0x11, 0x5c,
+	0xb9, 0x70, 0x23, 0x82, 0x23, 0x57, 0x82, 0x0b, 0xff, 0x00, 0x07, 0x6e, 0xdc, 0x39, 0x11, 0x04,
+	0x91, 0x2f, 0xb3, 0xbe, 0x24, 0xd9, 0xdd, 0x1e, 0x4c, 0x70, 0x71, 0x28, 0xdf, 0xfb, 0xbd, 0xdf,
+	0xcb, 0x97, 0xf9, 0x32, 0xeb, 0x65, 0x65, 0x19, 0x36, 0xcf, 0x99, 0xcb, 0x4f, 0x4d, 0xc3, 0x0f,
+	0x18, 0x67, 0xe1, 0x0e, 0xf3, 0xa9, 0xc7, 0x5c, 0xbe, 0x8d, 0x4d, 0x52, 0x54, 0xcd, 0x8d, 0x47,
+	0x43, 0xc6, 0x86, 0x2e, 0xdd, 0x31, 0x7d, 0x67, 0xc7, 0xf4, 0x3c, 0xc6, 0x4d, 0xee, 0x30, 0x2f,
+	0x94, 0xb0, 0x8d, 0xad, 0x2c, 0x07, 0xa7, 0xd6, 0xa9, 0xf8, 0x3d, 0x70, 0x5c, 0xaa, 0x10, 0x1b,
+	0x59, 0x84, 0xc5, 0x46, 0x23, 0xe6, 0x29, 0xdd, 0xe3, 0xac, 0x8e, 0x5e, 0x72, 0xc3, 0x62, 0xde,
+	0xc0, 0x19, 0x4a, 0xbd, 0xf6, 0xcf, 0x79, 0x80, 0xb6, 0x67, 0x3b, 0x16, 0xfa, 0x24, 0xcf, 0xa1,
+	0xc8, 0x5c, 0x6e, 0x38, 0x9e, 0xbd, 0x96, 0xdb, 0xca, 0x3d, 0x2b, 0xbf, 0x78, 0xb0, 0x1d, 0x75,
+	0xba, 0xe3, 0xf2, 0x04, 0x78, 0x70, 0x4f, 0x2f, 0x30, 0x14, 0x90, 0x1f, 0x43, 0xc9, 0xf1, 0xf8,
+	0x00, 0x6d, 0xe6, 0xd0, 0xe6, 0x61, 0x6c, 0xd3, 0xf6, 0xf8, 0x20, 0x63, 0x54, 0x74, 0xa4, 0x84,
+	0x34, 0xa0, 0x8a, 0x56, 0xcc, 0xa7, 0x01, 0x9a, 0xce, 0xa3, 0xe9, 0x66, 0xc6, 0xb4, 0xe3, 0xd3,
+	0x20, 0x63, 0x5e, 0x76, 0x12, 0x29, 0xf9, 0x1d, 0xa8, 0x30, 0x6f, 0x6c, 0xd8, 0x4e, 0x68, 0x21,
+	0x43, 0x1e, 0x19, 0x36, 0x92, 0x0e, 0x7b, 0xe3, 0xa6, 0x13, 0x5a, 0x19, 0x02, 0x60, 0xb1, 0x10,
+	0x63, 0xf5, 0xc6, 0x68, 0xba, 0x30, 0x19, 0xab, 0x37, 0x9e, 0x88, 0x15, 0x05, 0x22, 0x56, 0x36,
+	0xb2, 0x1c, 0xb4, 0x29, 0x4c, 0xc4, 0xda, 0x19, 0x59, 0x4e, 0x36, 0x56, 0x26, 0x25, 0xe4, 0xc7,
+	0x50, 0xf4, 0xcf, 0xe4, 0xa0, 0x16, 0xd1, 0x68, 0x3d, 0x36, 0xea, 0x9a, 0xd6, 0x19, 0x9d, 0x18,
+	0x57, 0xff, 0x0c, 0xc7, 0xf5, 0x37, 0x01, 0x7c, 0x16, 0x70, 0x23, 0xe4, 0x26, 0x0f, 0xd7, 0x4a,
+	0x13, 0xde, 0xba, 0x2c, 0xe0, 0x3d, 0x91, 0x28, 0x21, 0x77, 0xac, 0xf0, 0xe0, 0x9e, 0xbe, 0xe8,
+	0x2b, 0x49, 0x28, 0x2c, 0x07, 0x2e, 0xbb, 0x50, 0x96, 0x8b, 0x13, 0x96, 0x2f, 0x5d, 0x76, 0x91,
+	0xb5, 0x1c, 0x28, 0x49, 0x48, 0x7e, 0x03, 0x16, 0x4d, 0xd7, 0x0c, 0x46, 0xd8, 0x57, 0x40, 0xc3,
+	0xb5, 0xd8, 0xb0, 0x21, 0x34, 0x99, 0xae, 0x96, 0x4c, 0x25, 0xda, 0x2d, 0x40, 0xde, 0x36, 0xb9,
+	0xa9, 0xfd, 0x47, 0x15, 0x96, 0x26, 0x70, 0x62, 0x9c, 0x5d, 0x16, 0xce, 0xcc, 0xa9, 0x43, 0x16,
+	0x66, 0x63, 0x77, 0x51, 0x40, 0x9a, 0x50, 0xb3, 0xaf, 0x1c, 0x6f, 0x68, 0x0c, 0xcd, 0xd0, 0x4f,
+	0x65, 0xd6, 0xa3, 0xd8, 0xb2, 0x29, 0xd4, 0xfb, 0x66, 0xe8, 0x67, 0xec, 0x2b, 0x76, 0x4a, 0x2c,
+	0x72, 0x4c, 0x4c, 0x70, 0x12, 0xd1, 0x64, 0x8e, 0x75, 0xbc, 0xf1, 0x74, 0x50, 0x65, 0x96, 0x48,
+	0xc9, 0x1b, 0xb8, 0x2f, 0x28, 0x42, 0x6e, 0x06, 0x7c, 0xec, 0x1b, 0x03, 0xd3, 0x71, 0x53, 0xb9,
+	0xf6, 0x34, 0xcd, 0xd4, 0x93, 0x98, 0x97, 0xa6, 0xe3, 0x8e, 0x03, 0x9a, 0xa1, 0x5c, 0x66, 0x19,
+	0xb5, 0x20, 0xfe, 0x06, 0x1e, 0x20, 0xb1, 0x33, 0xf4, 0x4c, 0xd7, 0xb0, 0xe9, 0x30, 0x30, 0x6d,
+	0x9a, 0xca, 0xc5, 0x0f, 0x32, 0xd4, 0x88, 0x6a, 0x4a, 0x50, 0x86, 0x79, 0x85, 0x4d, 0x6b, 0xc9,
+	0xcf, 0xe0, 0x21, 0x2e, 0x8c, 0xc0, 0x19, 0x70, 0x83, 0x0d, 0x8c, 0x0b, 0xc7, 0xb3, 0xd9, 0x45,
+	0x2a, 0x69, 0x33, 0xe4, 0x4d, 0x01, 0xeb, 0x0c, 0xde, 0x20, 0x68, 0x8a, 0x7c, 0x52, 0x4b, 0xfa,
+	0x20, 0xa2, 0x31, 0x5c, 0x16, 0x86, 0x46, 0xbc, 0x16, 0x64, 0x5a, 0x7f, 0x94, 0xa6, 0x3d, 0x64,
+	0x61, 0xd8, 0x19, 0x88, 0x45, 0xb1, 0x77, 0x6a, 0x7a, 0x1e, 0x75, 0x33, 0xd4, 0x35, 0xa6, 0x10,
+	0x6a, 0x89, 0x44, 0xe3, 0x8c, 0xa1, 0x84, 0xc9, 0x38, 0x97, 0x66, 0x8c, 0xb3, 0xc4, 0x5c, 0x3b,
+	0xce, 0x89, 0x5a, 0x10, 0x77, 0xe4, 0x26, 0xc1, 0x9d, 0x0b, 0xd9, 0x53, 0xb9, 0x1a, 0x7e, 0x3d,
+	0x4d, 0xd8, 0x0f, 0x4c, 0x2f, 0x1c, 0x39, 0x61, 0xe8, 0x30, 0xaf, 0xed, 0x71, 0x1a, 0x0c, 0x68,
+	0x40, 0x3d, 0x8b, 0xbe, 0x31, 0x03, 0xcf, 0xf1, 0x86, 0x6a, 0xd7, 0xe8, 0x3b, 0x17, 0xd8, 0xd3,
+	0x9f, 0xcb, 0xc1, 0x35, 0x2d, 0xee, 0x9c, 0xa3, 0xdf, 0xa4, 0xb3, 0x30, 0x3d, 0x0a, 0x8d, 0x18,
+	0x36, 0xab, 0xbf, 0x22, 0xe6, 0x2c, 0x42, 0x7a, 0x58, 0x13, 0x1e, 0xfc, 0x80, 0x59, 0x34, 0x0c,
+	0xc5, 0x2a, 0xa0, 0x41, 0xc0, 0xe4, 0x2e, 0x59, 0x46, 0x17, 0xbf, 0x96, 0x76, 0xd1, 0x8d, 0x71,
+	0x2d, 0x01, 0xcb, 0x38, 0x58, 0x65, 0xb3, 0xf4, 0x84, 0xc2, 0x7a, 0x32, 0x87, 0x03, 0x23, 0xbc,
+	0xf2, 0xac, 0x24, 0x8a, 0x0a, 0xba, 0xf8, 0x78, 0x7a, 0x2e, 0xbf, 0xa6, 0x57, 0xbd, 0x2b, 0xcf,
+	0xba, 0x2e, 0x10, 0x09, 0x8a, 0x10, 0xc2, 0xcd, 0x2b, 0x58, 0xc5, 0x0d, 0x96, 0x8f, 0x0d, 0x9f,
+	0x79, 0x72, 0x3b, 0x42, 0x17, 0x55, 0x74, 0xf1, 0x7e, 0x66, 0xbb, 0xe5, 0xe3, 0x2e, 0xf3, 0x70,
+	0x17, 0x9a, 0x9a, 0xd2, 0xac, 0x8e, 0xb8, 0xf0, 0x08, 0xd3, 0x9b, 0x4e, 0xcc, 0xc1, 0x38, 0x90,
+	0x0b, 0xa8, 0x86, 0xec, 0x3f, 0xca, 0xe4, 0x78, 0x0a, 0x3b, 0xab, 0xff, 0x62, 0x38, 0x66, 0x63,
+	0xc8, 0x1b, 0x19, 0x44, 0x40, 0x47, 0x8c, 0x53, 0xc3, 0xa6, 0x03, 0x6a, 0xc9, 0xad, 0x7c, 0x09,
+	0xdd, 0x68, 0x69, 0x37, 0x3a, 0x82, 0x9a, 0x88, 0xc9, 0xf0, 0x13, 0x36, 0xa5, 0x24, 0xa1, 0x0c,
+	0x03, 0x27, 0x61, 0x48, 0x47, 0x86, 0x4d, 0x5d, 0xc7, 0xa3, 0x32, 0x1c, 0xc1, 0x5f, 0x47, 0xfe,
+	0xe7, 0xd3, 0xf3, 0xb0, 0xdf, 0x3a, 0x52, 0x4b, 0xaa, 0x99, 0x98, 0x64, 0xdc, 0xad, 0xa9, 0xe9,
+	0xd8, 0xa7, 0xa3, 0x2c, 0x84, 0x9c, 0xc3, 0x16, 0xe6, 0xd6, 0xe9, 0x55, 0xe8, 0x58, 0xa6, 0x6b,
+	0xd0, 0xef, 0xc6, 0x8e, 0x3f, 0xa2, 0x1e, 0x4f, 0xe5, 0xd8, 0x32, 0x3a, 0xfe, 0x24, 0x93, 0x63,
+	0x0a, 0xdf, 0x8a, 0xe0, 0xd3, 0xa9, 0x26, 0x82, 0xb9, 0x16, 0x46, 0x7e, 0x06, 0x2b, 0xe9, 0x8c,
+	0x33, 0xad, 0x33, 0x74, 0x45, 0xa6, 0x57, 0xa3, 0x8c, 0xb1, 0x61, 0x9d, 0x79, 0xec, 0xc2, 0xa5,
+	0xf6, 0x90, 0x0a, 0x9e, 0x8c, 0xa7, 0x25, 0x96, 0x42, 0x09, 0x72, 0x06, 0x9b, 0xb2, 0x10, 0x18,
+	0x0c, 0x8c, 0x80, 0x9a, 0xd6, 0xa9, 0x41, 0x2f, 0x2d, 0x4a, 0x6d, 0x6a, 0xa3, 0x93, 0x15, 0x74,
+	0xb2, 0x93, 0xad, 0x0b, 0x06, 0xb8, 0xc8, 0xb9, 0x63, 0xba, 0xba, 0xb0, 0x68, 0x29, 0x83, 0x8c,
+	0xa3, 0x87, 0x4c, 0x22, 0x27, 0x11, 0xf1, 0xd3, 0x6e, 0x1b, 0xaa, 0x99, 0xaa, 0x88, 0xbc, 0x07,
+	0x80, 0x05, 0x8d, 0x48, 0x75, 0x8a, 0x4f, 0xbb, 0x45, 0x7d, 0x51, 0x48, 0x44, 0xf2, 0x52, 0xed,
+	0x00, 0x6a, 0xd9, 0x8a, 0x88, 0x3c, 0x84, 0xa2, 0x2c, 0x9e, 0xe4, 0xb3, 0xb1, 0xa8, 0x17, 0xb0,
+	0x40, 0xb2, 0x27, 0x98, 0xe6, 0x26, 0x99, 0x4e, 0x61, 0x79, 0xaa, 0xbc, 0xb9, 0x9e, 0xec, 0x4b,
+	0xa8, 0x86, 0x34, 0x70, 0x4c, 0xd7, 0xf0, 0xc6, 0xa3, 0x13, 0x1a, 0xa8, 0xa7, 0xe9, 0x6a, 0x3c,
+	0x24, 0x3d, 0xd4, 0x1e, 0xa3, 0x52, 0xaf, 0x84, 0xa9, 0x96, 0xf6, 0x7d, 0x1e, 0xaa, 0x99, 0x72,
+	0xe8, 0x7a, 0x37, 0xab, 0x50, 0xc0, 0xf5, 0x2e, 0x9f, 0xd6, 0x45, 0x7d, 0x41, 0xac, 0xdd, 0xc9,
+	0x50, 0xe6, 0x27, 0x42, 0x21, 0x4f, 0xa0, 0x6c, 0xda, 0x23, 0xc7, 0x53, 0xfa, 0x05, 0xd4, 0x03,
+	0x8a, 0x24, 0x60, 0xaa, 0xf7, 0xf9, 0x77, 0xee, 0x3d, 0x39, 0x84, 0x32, 0x6e, 0x6c, 0x01, 0x35,
+	0x43, 0xe6, 0xe1, 0xe3, 0xaf, 0x96, 0xcd, 0xb7, 0x24, 0xb0, 0xed, 0xec, 0x56, 0xac, 0xa3, 0x89,
+	0x0e, 0x83, 0xf8, 0xb7, 0xf6, 0xa7, 0x73, 0x70, 0x7f, 0x16, 0x88, 0x7c, 0x00, 0x4f, 0x3a, 0xc7,
+	0xaf, 0x8c, 0xc6, 0x5e, 0xbf, 0xfd, 0xba, 0xd1, 0x6f, 0x77, 0x8e, 0x8d, 0x97, 0x8d, 0xf6, 0xa1,
+	0xa1, 0xb7, 0x1a, 0xbd, 0xce, 0xb1, 0x71, 0xdc, 0x39, 0x6e, 0xd5, 0xef, 0x91, 0x0f, 0x41, 0xbb,
+	0x01, 0xa4, 0x37, 0x8e, 0xf7, 0xdb, 0xc7, 0xfb, 0xf5, 0x1c, 0xf9, 0x09, 0xbc, 0xb8, 0x01, 0xd7,
+	0x6d, 0xf4, 0x7a, 0x6f, 0x3a, 0x7a, 0xd3, 0x68, 0xbc, 0xea, 0x1f, 0xb4, 0x8e, 0xfb, 0xed, 0x3d,
+	0xc4, 0xd4, 0xe7, 0x88, 0x06, 0x8f, 0x6f, 0xb0, 0x3b, 0xec, 0xf4, 0xea, 0xf3, 0xe4, 0x7d, 0x78,
+	0x6f, 0x16, 0x06, 0x65, 0x87, 0x0d, 0xfd, 0xa8, 0x9e, 0xbf, 0x2e, 0x96, 0xde, 0x9b, 0x76, 0x7f,
+	0xef, 0xc0, 0xe8, 0xbc, 0x6e, 0xe9, 0xf5, 0x05, 0xed, 0xe7, 0x40, 0xa6, 0x0b, 0x74, 0x42, 0x20,
+	0xcf, 0xaf, 0xfc, 0x28, 0xf1, 0xf1, 0x77, 0x3a, 0x5b, 0xe6, 0x6e, 0xc8, 0xf0, 0xc9, 0xb4, 0xd0,
+	0x74, 0xa8, 0x65, 0x2b, 0xea, 0x5b, 0xe7, 0x5d, 0x1d, 0xe6, 0xfd, 0x33, 0x8e, 0xcc, 0x15, 0x5d,
+	0xfc, 0xd4, 0xfe, 0x29, 0x07, 0xf5, 0xc9, 0x8a, 0x9b, 0x6c, 0xc2, 0x22, 0xd2, 0x62, 0xcf, 0x65,
+	0xf6, 0xe1, 0x81, 0xa6, 0x3f, 0xd1, 0xfb, 0xa9, 0xf5, 0x39, 0xa4, 0x23, 0x2c, 0xd0, 0x63, 0xbf,
+	0x8b, 0x4a, 0xd2, 0xb6, 0x85, 0x1d, 0x96, 0xe0, 0x8e, 0x2c, 0x3a, 0x8b, 0x7a, 0x41, 0x34, 0xa5,
+	0x02, 0x8d, 0x3c, 0x86, 0xc9, 0x58, 0xd4, 0x0b, 0xa2, 0x79, 0xcc, 0xc8, 0x03, 0x28, 0x58, 0x8c,
+	0x9d, 0x39, 0x14, 0x8b, 0xa9, 0x82, 0xae, 0x5a, 0x51, 0x14, 0xf9, 0x24, 0x8a, 0xa7, 0xb0, 0x28,
+	0xcb, 0x14, 0xd3, 0xba, 0xbe, 0x83, 0xda, 0x4f, 0x61, 0xf1, 0x80, 0x9a, 0x01, 0x3f, 0xa1, 0x26,
+	0x27, 0x3b, 0xb0, 0x72, 0x1a, 0x35, 0x64, 0x91, 0xc5, 0xc7, 0x01, 0x55, 0x16, 0x24, 0x56, 0xf5,
+	0x22, 0x8d, 0xf6, 0x77, 0x39, 0x98, 0xef, 0x78, 0xe3, 0x5b, 0x8f, 0xf9, 0xd4, 0x5a, 0x9d, 0x7f,
+	0xf7, 0xb5, 0x2a, 0x22, 0x75, 0xe4, 0xea, 0x2e, 0xea, 0xe2, 0x27, 0xf9, 0x08, 0x96, 0xd8, 0xc8,
+	0xb2, 0x0c, 0xea, 0x59, 0xc1, 0x95, 0x2f, 0x66, 0x0b, 0x27, 0xa8, 0xa4, 0xd7, 0x84, 0xb8, 0x15,
+	0x4b, 0xb5, 0xbf, 0xcf, 0x01, 0xc1, 0x67, 0xc7, 0x50, 0x3c, 0x7e, 0x9a, 0x4e, 0xc8, 0x4d, 0xef,
+	0x86, 0xc1, 0xb9, 0xae, 0xf7, 0x5f, 0xc0, 0xba, 0x2b, 0x29, 0x0c, 0x75, 0xb2, 0x44, 0x1e, 0xe3,
+	0x8f, 0x68, 0xc0, 0xd4, 0x3c, 0x3e, 0x50, 0x00, 0xb9, 0xfb, 0xa2, 0xfa, 0x1b, 0x1a, 0x30, 0xf2,
+	0x19, 0xdc, 0x9f, 0x65, 0xaa, 0xa2, 0x21, 0xd3, 0x56, 0xda, 0xd7, 0x50, 0x14, 0x09, 0x7e, 0x14,
+	0x0e, 0xef, 0x20, 0xb3, 0x7f, 0x95, 0x83, 0x45, 0xf1, 0x9c, 0xc6, 0xe4, 0xbe, 0x35, 0x5f, 0x2a,
+	0x29, 0xf3, 0x99, 0xa4, 0xcc, 0x66, 0xf9, 0xc2, 0x64, 0x96, 0x4f, 0xf7, 0xe3, 0x0b, 0xa8, 0xbc,
+	0xf2, 0x5d, 0xc7, 0x3b, 0x7b, 0x5b, 0x4f, 0x94, 0xe9, 0x5c, 0x62, 0xfa, 0xe7, 0x8b, 0x00, 0x4d,
+	0x7a, 0xee, 0x58, 0xb4, 0xed, 0x0d, 0x70, 0x3d, 0x9c, 0x53, 0xcf, 0x66, 0x81, 0xda, 0x4d, 0x54,
+	0x8b, 0xdc, 0x87, 0x85, 0x11, 0xb3, 0xa9, 0xab, 0x9e, 0x89, 0xb2, 0x41, 0x7e, 0x04, 0xf5, 0x53,
+	0x33, 0xb0, 0x2f, 0xcc, 0x80, 0x1a, 0xe7, 0x34, 0x10, 0xa5, 0xbc, 0xda, 0x52, 0x96, 0x22, 0xf9,
+	0x6b, 0x29, 0x16, 0xd0, 0x81, 0x13, 0x8c, 0x32, 0xd0, 0xbc, 0x84, 0x46, 0xf2, 0x08, 0xba, 0x09,
+	0x8b, 0x36, 0xf6, 0x48, 0xf4, 0xbf, 0x2e, 0xb7, 0x06, 0x29, 0x68, 0xdb, 0x62, 0xc6, 0x95, 0x32,
+	0x9b, 0xf1, 0xcb, 0x88, 0x23, 0x52, 0x97, 0x4e, 0x77, 0x41, 0x27, 0xea, 0x60, 0x31, 0x78, 0x21,
+	0x96, 0xd9, 0x45, 0xbd, 0xe4, 0x33, 0x4f, 0x1c, 0xe5, 0x43, 0xf2, 0x18, 0x80, 0x53, 0xeb, 0xd4,
+	0x63, 0x2e, 0x1b, 0x5e, 0x45, 0x4f, 0xc1, 0x44, 0x42, 0xb6, 0xe4, 0x41, 0xc6, 0xb1, 0xe5, 0x61,
+	0x54, 0xed, 0x1e, 0x80, 0x13, 0x88, 0x67, 0x4b, 0xf2, 0x08, 0x40, 0x21, 0xa8, 0x3a, 0x92, 0x15,
+	0xf5, 0x12, 0xea, 0x5b, 0x9e, 0x4d, 0x9e, 0x42, 0xcd, 0x74, 0x5d, 0x66, 0x25, 0x0c, 0x25, 0x44,
+	0x54, 0x50, 0x1a, 0x71, 0x6c, 0x41, 0x25, 0x46, 0x51, 0x75, 0x5c, 0x2a, 0xea, 0xa0, 0x30, 0x82,
+	0xe7, 0x19, 0xd4, 0x93, 0x94, 0x50, 0x4c, 0x80, 0xa8, 0x5a, 0x9c, 0x18, 0x92, 0xeb, 0x29, 0xd4,
+	0x52, 0x48, 0xaa, 0x4e, 0x2f, 0x45, 0xbd, 0x12, 0xe3, 0x04, 0x9f, 0x06, 0x55, 0xb5, 0x53, 0x2a,
+	0xb2, 0x2a, 0x82, 0xca, 0x72, 0xbf, 0x94, 0x4c, 0x8f, 0xa1, 0x1c, 0x61, 0xa8, 0x2a, 0xf0, 0x8b,
+	0xf2, 0xb5, 0x85, 0xe4, 0xf8, 0x0a, 0x0a, 0x81, 0xe9, 0x0d, 0x69, 0xb8, 0xb6, 0xb4, 0x35, 0xff,
+	0xac, 0xfc, 0xe2, 0x59, 0xf2, 0x9a, 0x20, 0x4e, 0x28, 0xf5, 0x53, 0xa7, 0x21, 0x1b, 0x07, 0x16,
+	0xd5, 0x11, 0xaf, 0x2b, 0xbb, 0x8d, 0xbf, 0xc8, 0xc3, 0xfd, 0x59, 0x00, 0xb2, 0x1e, 0xbd, 0xdd,
+	0xb2, 0xc3, 0xb5, 0xdc, 0xd6, 0xfc, 0xb3, 0xa2, 0x7a, 0x85, 0x65, 0x4f, 0xce, 0xd8, 0xdc, 0xd4,
+	0x8c, 0xed, 0xc1, 0x82, 0xcf, 0x98, 0x1b, 0xae, 0xcd, 0x63, 0xa7, 0x3e, 0x7d, 0xd7, 0x4e, 0x6d,
+	0x77, 0x19, 0x73, 0x75, 0x69, 0xbb, 0xf1, 0x5f, 0x73, 0x90, 0x17, 0x6d, 0xf2, 0x7b, 0xa9, 0x67,
+	0x6b, 0xed, 0xc5, 0x4f, 0x6e, 0x45, 0x86, 0x7f, 0xc4, 0xf3, 0x4c, 0x3d, 0x93, 0x7b, 0x50, 0x0c,
+	0x4f, 0xcd, 0xc0, 0xf1, 0x86, 0xd8, 0xed, 0xda, 0x8b, 0x2f, 0x6e, 0x47, 0xd7, 0x93, 0xc6, 0xc8,
+	0x18, 0x31, 0x89, 0x85, 0x29, 0x27, 0x50, 0x6e, 0x94, 0xb2, 0x21, 0xd6, 0x39, 0x55, 0xef, 0x4b,
+	0x8a, 0xba, 0xf8, 0xa9, 0x35, 0xa0, 0x14, 0x75, 0x87, 0x00, 0x14, 0x44, 0xad, 0xd1, 0x6e, 0xd6,
+	0xef, 0x91, 0x0a, 0x94, 0x1a, 0x87, 0x87, 0x9d, 0x3d, 0xd1, 0xca, 0x91, 0x1a, 0xc0, 0x7e, 0xeb,
+	0xa8, 0xdb, 0xd1, 0xfb, 0xa2, 0x3d, 0x47, 0xca, 0x50, 0x7c, 0x79, 0xd8, 0x79, 0x23, 0x1a, 0xf3,
+	0xda, 0x29, 0x94, 0x53, 0x5d, 0x20, 0x0f, 0x80, 0x34, 0x5b, 0x4d, 0x51, 0x08, 0xb5, 0x9a, 0x46,
+	0xb7, 0xa5, 0x1b, 0xed, 0xe3, 0xfe, 0xcb, 0xfa, 0x3d, 0xf2, 0x04, 0x36, 0x7b, 0x07, 0x0d, 0xbd,
+	0xd5, 0x34, 0x76, 0xff, 0xd0, 0x68, 0x1c, 0x1e, 0xa2, 0x1c, 0x7f, 0xf4, 0x5b, 0x7b, 0x07, 0xf5,
+	0x1c, 0xd9, 0x82, 0x47, 0x33, 0x00, 0xbd, 0xc6, 0x51, 0x4b, 0x22, 0xe6, 0xb4, 0x3f, 0x9e, 0x07,
+	0xd8, 0x73, 0xcd, 0x30, 0x74, 0x06, 0x0e, 0x0d, 0x70, 0xff, 0x34, 0xb8, 0x1f, 0xef, 0x66, 0x0b,
+	0xac, 0xef, 0x3b, 0x36, 0x59, 0x81, 0x05, 0x66, 0x9c, 0xc7, 0xbb, 0x6a, 0x9e, 0xbd, 0x76, 0x70,
+	0xaf, 0x75, 0x24, 0x56, 0x0d, 0x88, 0x13, 0x61, 0x1d, 0xc4, 0xca, 0x21, 0xc9, 0x3b, 0x02, 0xfb,
+	0x10, 0x8a, 0xcc, 0xf0, 0x4f, 0x1c, 0x1e, 0xaa, 0x4d, 0xb6, 0xc0, 0xba, 0xa2, 0x85, 0xfb, 0xa7,
+	0x52, 0xa8, 0x72, 0xc1, 0x91, 0x8a, 0x75, 0x28, 0x51, 0x7e, 0x2a, 0x8b, 0x16, 0xb9, 0xd4, 0x8b,
+	0x94, 0x9f, 0x46, 0x35, 0x8b, 0x1d, 0x72, 0x63, 0x64, 0x5a, 0xb8, 0xc4, 0x2b, 0x7a, 0xc1, 0x0e,
+	0xf9, 0x91, 0x69, 0x09, 0x45, 0x18, 0x58, 0xa8, 0x58, 0x94, 0x8a, 0x30, 0xb0, 0x84, 0x42, 0x24,
+	0xb9, 0x2f, 0x5f, 0x11, 0xab, 0xb5, 0x5c, 0x74, 0xfc, 0x2e, 0xbe, 0xa4, 0x5e, 0x05, 0x61, 0x6d,
+	0x38, 0xbe, 0x5a, 0xbc, 0x0b, 0x76, 0xc8, 0xdb, 0xbe, 0x10, 0x0b, 0x2a, 0xc7, 0x57, 0xfb, 0xd8,
+	0x42, 0x18, 0x58, 0x6d, 0x5f, 0x10, 0x09, 0xb1, 0x58, 0xdd, 0x6a, 0x1d, 0x0b, 0x8f, 0x62, 0x83,
+	0x13, 0x2a, 0x41, 0x84, 0x2a, 0xb9, 0x80, 0x45, 0x2f, 0x51, 0xb5, 0x05, 0x15, 0xff, 0x8c, 0x1b,
+	0xdc, 0x1c, 0xca, 0x78, 0x96, 0xe4, 0x52, 0xf2, 0xcf, 0x78, 0xdf, 0xc4, 0x19, 0xd6, 0x7e, 0x35,
+	0x0f, 0x8b, 0xa2, 0xf0, 0x66, 0xde, 0xde, 0x08, 0xb7, 0x0c, 0xd3, 0xb6, 0x0d, 0x36, 0xe6, 0x34,
+	0x10, 0x56, 0x38, 0x19, 0x25, 0xbd, 0x6c, 0xda, 0x76, 0x47, 0xc8, 0xfa, 0xe6, 0x50, 0x6c, 0x53,
+	0xe2, 0xc8, 0x7e, 0x4e, 0x53, 0xb0, 0x39, 0x59, 0x3b, 0x48, 0x79, 0x8c, 0xdc, 0x82, 0x0a, 0x0f,
+	0x4c, 0xdf, 0xe0, 0xcc, 0x38, 0x65, 0xa1, 0x4c, 0xdf, 0x92, 0x0e, 0x42, 0xd6, 0x67, 0x07, 0x2c,
+	0xe4, 0xe4, 0x13, 0x20, 0x01, 0x1d, 0x99, 0xc1, 0x99, 0xe2, 0x92, 0xf3, 0x91, 0x47, 0x5c, 0x5d,
+	0x6a, 0x90, 0x4d, 0xce, 0x4c, 0x82, 0x76, 0x3c, 0x2f, 0x46, 0x2f, 0xa4, 0xd1, 0x6d, 0xa1, 0x90,
+	0x68, 0x15, 0x8b, 0x84, 0x8a, 0x4e, 0x16, 0xe2, 0x58, 0x10, 0x95, 0x8d, 0x25, 0x81, 0x15, 0xd3,
+	0xb1, 0xc4, 0xc8, 0x6d, 0x58, 0xe1, 0x81, 0xe9, 0x85, 0xae, 0xc9, 0xd3, 0xe0, 0x12, 0x82, 0x97,
+	0x63, 0xd5, 0x6c, 0x7c, 0x32, 0x50, 0x8b, 0x13, 0xf8, 0x68, 0xac, 0xb4, 0x7f, 0xc8, 0x41, 0x41,
+	0xce, 0x03, 0x79, 0x0a, 0xf3, 0xd6, 0x28, 0x7a, 0xa3, 0x4b, 0x92, 0x97, 0xc4, 0xd1, 0x2c, 0xe9,
+	0x42, 0x3d, 0x7b, 0x65, 0xa4, 0xb2, 0x7d, 0x3e, 0x93, 0xed, 0xc9, 0xf2, 0xca, 0x4f, 0x2c, 0x2f,
+	0xb9, 0x64, 0x16, 0xb2, 0x4b, 0x66, 0xf6, 0xca, 0x48, 0xd6, 0x5d, 0x31, 0xb5, 0xee, 0xb4, 0x7f,
+	0x9b, 0x87, 0xfc, 0x4b, 0x97, 0x5d, 0xe0, 0x83, 0xd0, 0xb2, 0x68, 0x18, 0x1a, 0xe9, 0xca, 0x64,
+	0x49, 0xaf, 0x48, 0x69, 0x7b, 0x56, 0xa5, 0xb4, 0x14, 0x55, 0x4a, 0xab, 0x50, 0x18, 0x7b, 0x8e,
+	0x10, 0x97, 0xa5, 0x78, 0xec, 0x39, 0x37, 0x95, 0xfb, 0x9b, 0x80, 0x8f, 0x29, 0x99, 0xd7, 0xb2,
+	0xca, 0x28, 0x09, 0x01, 0x2e, 0xd4, 0x75, 0x28, 0x45, 0x0f, 0x5b, 0x5c, 0x76, 0x4b, 0x7a, 0x51,
+	0x3d, 0x68, 0xc9, 0x87, 0xb0, 0xe4, 0x51, 0x7e, 0xc1, 0x30, 0x8b, 0x64, 0x2f, 0x17, 0x10, 0x51,
+	0x55, 0xe2, 0xf6, 0xac, 0x63, 0x48, 0x01, 0x21, 0xa9, 0x02, 0xed, 0x73, 0x00, 0x2b, 0xde, 0xbd,
+	0xd4, 0x5b, 0xda, 0x95, 0x78, 0xae, 0x92, 0x8d, 0x4d, 0x4f, 0xc1, 0xc8, 0x47, 0x50, 0x30, 0x71,
+	0x16, 0xd5, 0xdb, 0xd7, 0xa5, 0x89, 0xc9, 0xd5, 0x95, 0x9a, 0x6c, 0x40, 0xc9, 0x0f, 0x1c, 0x16,
+	0x38, 0xfc, 0x0a, 0x53, 0x66, 0x49, 0x8f, 0xdb, 0xa9, 0xe3, 0x4c, 0x25, 0x73, 0x9c, 0x49, 0x95,
+	0x9a, 0xd5, 0x4c, 0xa9, 0xb9, 0x0e, 0xa5, 0x61, 0xc0, 0xc6, 0xbe, 0x88, 0x43, 0xed, 0x0f, 0xd8,
+	0x96, 0x83, 0x91, 0xbe, 0xf5, 0x12, 0x88, 0x25, 0x44, 0x54, 0x85, 0xb8, 0x2b, 0xa5, 0x6d, 0x5b,
+	0xeb, 0x43, 0x65, 0xb2, 0xde, 0x92, 0x45, 0x63, 0x34, 0xc9, 0x15, 0xbd, 0x24, 0x05, 0x6d, 0x5b,
+	0x9c, 0x2d, 0x94, 0x32, 0xf4, 0xa9, 0xe5, 0x0c, 0x1c, 0x4b, 0x15, 0xa3, 0x35, 0x29, 0xee, 0x29,
+	0xa9, 0xf6, 0x2f, 0x79, 0xa8, 0x65, 0x6f, 0x5b, 0xae, 0xaf, 0x6a, 0xd7, 0xa1, 0x14, 0x5c, 0x1a,
+	0x27, 0x57, 0x9c, 0x86, 0xc8, 0x56, 0xd0, 0x8b, 0xc1, 0xe5, 0xae, 0x68, 0x8a, 0x99, 0x0a, 0x2e,
+	0x0d, 0x1f, 0xcb, 0x62, 0x99, 0xf7, 0x05, 0x7d, 0x31, 0xb8, 0x94, 0x75, 0x72, 0x88, 0x6b, 0xfc,
+	0xd2, 0x18, 0x5b, 0xa6, 0xd8, 0x23, 0x15, 0x28, 0x8f, 0xa0, 0x5a, 0x70, 0xf9, 0x4a, 0x88, 0xb3,
+	0xc8, 0x51, 0x06, 0xb9, 0x10, 0x21, 0x8f, 0xa6, 0x91, 0x27, 0x19, 0x64, 0x21, 0x42, 0xee, 0x4e,
+	0x23, 0xe5, 0x2b, 0xc0, 0x08, 0x59, 0x8c, 0x90, 0xf8, 0x12, 0x2f, 0x42, 0xae, 0x43, 0x89, 0x47,
+	0x11, 0x96, 0x64, 0x84, 0x3c, 0x89, 0x90, 0x27, 0x11, 0x2e, 0xca, 0x08, 0x79, 0x3a, 0x42, 0x3e,
+	0x19, 0x21, 0x48, 0x1f, 0x7c, 0x2a, 0x42, 0x3e, 0x19, 0x61, 0x39, 0x42, 0x1e, 0x4d, 0x23, 0xb3,
+	0x11, 0x56, 0x22, 0xe4, 0xee, 0x34, 0x32, 0x1b, 0x61, 0x35, 0x42, 0x66, 0x22, 0xd4, 0xa0, 0x1a,
+	0x5c, 0x1a, 0x56, 0x60, 0x49, 0x74, 0x88, 0xd9, 0x58, 0xd0, 0xcb, 0xc1, 0xe5, 0x5e, 0x60, 0x21,
+	0x12, 0x43, 0x3d, 0x71, 0xfc, 0x08, 0xb0, 0x24, 0x43, 0x3d, 0x71, 0x7c, 0xa5, 0x7e, 0x04, 0x8b,
+	0xdc, 0x19, 0xd1, 0x90, 0x9b, 0x23, 0x1f, 0xcf, 0x0d, 0x45, 0x3d, 0x11, 0x68, 0xff, 0x98, 0x83,
+	0x5a, 0xf6, 0x12, 0x2e, 0xbd, 0x7f, 0xe4, 0x32, 0xfb, 0xc7, 0x0f, 0x4f, 0xa8, 0x1f, 0x3e, 0x51,
+	0x37, 0xf7, 0xfe, 0x2b, 0xa8, 0x66, 0x6e, 0xed, 0xae, 0x5f, 0x0c, 0x0f, 0xa0, 0x10, 0x72, 0x93,
+	0x8f, 0x43, 0x55, 0x1b, 0xab, 0x96, 0xf6, 0x2d, 0xac, 0xcc, 0xb8, 0xbd, 0xbb, 0xf5, 0xa1, 0x35,
+	0xa1, 0x9f, 0xcf, 0xd0, 0xff, 0xed, 0x1c, 0xbe, 0x0b, 0x98, 0xbc, 0x85, 0xfc, 0x01, 0x6f, 0x2d,
+	0x5d, 0x16, 0x1a, 0x19, 0x17, 0x8b, 0x2e, 0x0b, 0x7b, 0x28, 0x90, 0xea, 0x93, 0x48, 0x9d, 0x8f,
+	0xd4, 0x27, 0x4a, 0xfd, 0x0c, 0xea, 0x2e, 0xf3, 0x2d, 0x63, 0xe4, 0x84, 0x31, 0x87, 0x3c, 0xd3,
+	0xd5, 0x84, 0xfc, 0xc8, 0x09, 0x23, 0xa2, 0xe7, 0xb0, 0xaa, 0x90, 0x2a, 0xe1, 0x22, 0x78, 0x41,
+	0x9e, 0x23, 0x25, 0x5c, 0x26, 0x9e, 0x32, 0x79, 0x02, 0x65, 0x97, 0x0d, 0x9c, 0x08, 0x58, 0x94,
+	0xe5, 0x92, 0x10, 0x29, 0xc0, 0xfb, 0x50, 0x71, 0x99, 0x39, 0x8a, 0x11, 0x25, 0x44, 0x94, 0x51,
+	0x26, 0x21, 0x1a, 0x85, 0xcd, 0x1b, 0xee, 0x2c, 0xef, 0x6c, 0x32, 0xfe, 0x2a, 0x07, 0x1b, 0xd7,
+	0x5f, 0x60, 0xde, 0x95, 0x1b, 0xf2, 0x39, 0x3c, 0x70, 0x3c, 0x71, 0x98, 0xa7, 0xc6, 0x89, 0x13,
+	0xdd, 0x65, 0x04, 0x26, 0x8f, 0xde, 0xbf, 0xac, 0x28, 0xed, 0xae, 0x23, 0xaf, 0x24, 0x74, 0x93,
+	0x53, 0xed, 0x7b, 0xd9, 0xb7, 0x6b, 0xee, 0x3f, 0xef, 0xac, 0x6f, 0xf7, 0x61, 0x01, 0x6f, 0x62,
+	0xa3, 0x9a, 0x06, 0x1b, 0x82, 0xdd, 0xa3, 0x17, 0x06, 0xfd, 0x2e, 0xaa, 0x6a, 0x0a, 0x1e, 0xbd,
+	0x68, 0x7d, 0x67, 0x6b, 0xa7, 0xf0, 0xf8, 0xe6, 0xdb, 0xd3, 0x3b, 0x9b, 0x9b, 0xbf, 0xce, 0xc9,
+	0x1c, 0xb8, 0xe6, 0x3e, 0xf5, 0xff, 0x77, 0x72, 0x7e, 0x99, 0x03, 0xed, 0xed, 0x77, 0xb3, 0xff,
+	0xb7, 0x93, 0xa4, 0x7d, 0x87, 0x73, 0x71, 0xc3, 0x1d, 0xee, 0xad, 0xfd, 0x3f, 0xc9, 0xde, 0x47,
+	0xc8, 0x62, 0x31, 0x7d, 0xc5, 0x70, 0x06, 0xef, 0xbf, 0xf5, 0xc2, 0xf5, 0xce, 0x32, 0xa0, 0x0f,
+	0x44, 0xb7, 0x9d, 0x89, 0xbb, 0x3c, 0x51, 0x6e, 0x05, 0xb6, 0xa3, 0xe6, 0xc9, 0x62, 0x63, 0x8f,
+	0xa3, 0x97, 0x82, 0x5e, 0x0d, 0x14, 0x78, 0x4f, 0x08, 0xaf, 0xdd, 0xdf, 0xff, 0x32, 0x07, 0x6b,
+	0xd7, 0xdd, 0xe8, 0xde, 0xba, 0xeb, 0x0d, 0xa8, 0x26, 0x9d, 0x99, 0xf5, 0x0d, 0xc7, 0x74, 0x00,
+	0x07, 0xf7, 0xf4, 0x72, 0x90, 0x48, 0x77, 0x8b, 0xf8, 0x62, 0x82, 0x87, 0xda, 0x31, 0x3c, 0xba,
+	0xe9, 0xbe, 0xfc, 0xb6, 0x7d, 0xd3, 0x7e, 0x01, 0x5b, 0x6f, 0xbb, 0x5b, 0xbe, 0xb3, 0xa9, 0xfa,
+	0x05, 0xac, 0x5f, 0x7b, 0xc1, 0xfc, 0x43, 0x9e, 0x6d, 0xf1, 0xa0, 0x26, 0xa5, 0x83, 0x1a, 0xb2,
+	0x50, 0xfb, 0x9b, 0x1c, 0x3c, 0x7b, 0xd7, 0xdb, 0xe6, 0x3b, 0x5b, 0x81, 0x9f, 0x02, 0x49, 0xdf,
+	0x80, 0xab, 0xbe, 0xc9, 0xe5, 0xb8, 0x9c, 0xd2, 0xa8, 0x3e, 0x8e, 0xe0, 0x83, 0x77, 0xb8, 0x97,
+	0xbe, 0xb3, 0xe1, 0x77, 0x71, 0x37, 0x7a, 0xcb, 0xdd, 0xf4, 0x9d, 0x79, 0xfb, 0xb3, 0x1c, 0x7c,
+	0xf8, 0x6e, 0xb7, 0xd4, 0x77, 0x36, 0xfc, 0x1b, 0x50, 0x9a, 0xb8, 0xb3, 0x88, 0xdb, 0xda, 0x7f,
+	0xe6, 0xa0, 0xbc, 0x2f, 0xce, 0x62, 0x47, 0x14, 0xcf, 0x55, 0xef, 0x43, 0xc5, 0x89, 0x2e, 0xa0,
+	0x22, 0xc7, 0x55, 0xfc, 0x36, 0x4f, 0xca, 0xda, 0x36, 0x69, 0x43, 0x2d, 0x81, 0xe0, 0xe1, 0x57,
+	0xbe, 0x68, 0x4c, 0x3e, 0x97, 0x48, 0x11, 0x6e, 0xc7, 0xd7, 0x59, 0xf8, 0x46, 0xb1, 0xea, 0xa4,
+	0x9b, 0xe4, 0x31, 0x94, 0x87, 0x74, 0x64, 0x44, 0x67, 0xdc, 0x79, 0x74, 0x26, 0xce, 0xb8, 0x5d,
+	0x79, 0xc6, 0x4d, 0x9f, 0x42, 0xf3, 0xa8, 0x8c, 0xdb, 0xda, 0x6f, 0x43, 0x35, 0xc3, 0x4d, 0x8a,
+	0x30, 0xdf, 0xed, 0x1c, 0xd7, 0xef, 0x91, 0x3a, 0x54, 0x5a, 0xdd, 0xce, 0xb1, 0xf1, 0x7c, 0xdf,
+	0xe8, 0x36, 0xfa, 0x07, 0xf5, 0x1c, 0x59, 0x86, 0xaa, 0x94, 0x7c, 0xa6, 0x44, 0x73, 0xda, 0x9f,
+	0xcc, 0xc1, 0x02, 0xf6, 0x33, 0x73, 0x3a, 0x95, 0xe1, 0xc6, 0xa7, 0xd3, 0x9f, 0x42, 0xd1, 0x62,
+	0xa3, 0x91, 0xa9, 0x3e, 0x52, 0x9b, 0x8a, 0x31, 0x1d, 0x69, 0xb8, 0x27, 0x91, 0x7a, 0x64, 0x42,
+	0xb6, 0xa1, 0x38, 0x92, 0x2a, 0xf5, 0x9a, 0xf8, 0xfe, 0xac, 0x11, 0xd2, 0x23, 0x50, 0xea, 0x70,
+	0x9e, 0xbf, 0xf1, 0x70, 0xae, 0x7d, 0x0d, 0x2b, 0x33, 0x1c, 0x93, 0x25, 0x28, 0x37, 0x9a, 0x4d,
+	0xe3, 0xa8, 0x75, 0xb4, 0xdb, 0xd2, 0x7b, 0xf5, 0x7b, 0x84, 0x40, 0x4d, 0x6f, 0x1d, 0x75, 0x5e,
+	0xb7, 0x62, 0x59, 0x4e, 0x80, 0x7a, 0xad, 0x7e, 0x2c, 0x98, 0xd3, 0xbe, 0x01, 0x78, 0x6d, 0xba,
+	0x63, 0xda, 0x35, 0x03, 0x73, 0x44, 0x1e, 0xc3, 0x3c, 0xf3, 0xc6, 0xea, 0xd5, 0x4f, 0x25, 0xf3,
+	0x01, 0x8c, 0x50, 0x90, 0x4f, 0x60, 0xe1, 0x5c, 0xa0, 0xd5, 0x78, 0x3c, 0xd8, 0x56, 0x5f, 0xa4,
+	0x22, 0x85, 0x98, 0x86, 0x6d, 0x9c, 0x67, 0x09, 0xd2, 0x8a, 0xb0, 0xd0, 0x1a, 0xf9, 0xfc, 0xea,
+	0xc5, 0x7f, 0x2f, 0x43, 0xb1, 0x23, 0xb9, 0x48, 0x13, 0xa0, 0xe9, 0x84, 0xe6, 0x89, 0x4b, 0x3b,
+	0x2e, 0x27, 0xb5, 0xd8, 0x07, 0x22, 0x37, 0x26, 0xda, 0xda, 0x83, 0x5f, 0xfe, 0xeb, 0xbf, 0x7f,
+	0x3f, 0x57, 0xd7, 0xca, 0x3b, 0xe7, 0xcf, 0x77, 0x94, 0xdd, 0x97, 0xb9, 0x8f, 0xc9, 0x4b, 0x28,
+	0xeb, 0x94, 0x7a, 0xef, 0x4a, 0xf3, 0x10, 0x69, 0x96, 0xb5, 0x8a, 0xa0, 0x89, 0x0c, 0x05, 0x4f,
+	0x0b, 0xca, 0xaa, 0x08, 0xa0, 0x1d, 0x6f, 0x4c, 0x32, 0x21, 0x4f, 0xb1, 0xac, 0x21, 0x0b, 0xd1,
+	0xaa, 0x82, 0xa5, 0x25, 0x9d, 0x7b, 0x63, 0x41, 0x73, 0x00, 0xd5, 0xf8, 0x61, 0xf1, 0x0e, 0x44,
+	0xeb, 0x48, 0xb4, 0xa2, 0xd5, 0x52, 0x51, 0x29, 0xa6, 0x3d, 0x58, 0x6c, 0x52, 0x97, 0xde, 0xba,
+	0x3b, 0xb1, 0x91, 0x20, 0x69, 0x03, 0xa8, 0x0b, 0xc8, 0xce, 0x98, 0x93, 0x7a, 0xe6, 0x43, 0xd6,
+	0xa3, 0x70, 0x78, 0x73, 0x7f, 0x12, 0x4b, 0x41, 0xd5, 0x81, 0x4a, 0x7c, 0xfb, 0x28, 0xc8, 0x48,
+	0xe6, 0xe3, 0x21, 0x14, 0x4f, 0xd1, 0x6d, 0x22, 0xdd, 0xaa, 0x56, 0x47, 0xba, 0x94, 0xb5, 0x20,
+	0xfc, 0x03, 0x58, 0x4a, 0xdf, 0x23, 0x0a, 0xce, 0xe4, 0x0e, 0x39, 0xad, 0x99, 0xa2, 0x7d, 0x8c,
+	0xb4, 0x6b, 0xda, 0x8a, 0xa0, 0x9d, 0xe0, 0x10, 0xcc, 0x5f, 0x41, 0x51, 0x1c, 0xbe, 0x1b, 0xb6,
+	0x4d, 0xaa, 0x99, 0x6f, 0x62, 0x6f, 0xce, 0x2a, 0x65, 0x23, 0xb3, 0x0a, 0x44, 0x4b, 0xc7, 0x57,
+	0xaf, 0x6f, 0x23, 0xc9, 0x0c, 0x5a, 0x62, 0x26, 0x78, 0x7a, 0x50, 0x8b, 0x6f, 0xe8, 0xf7, 0x4e,
+	0xa9, 0x75, 0x36, 0x95, 0xa0, 0xc9, 0x30, 0xc6, 0x40, 0xed, 0x3d, 0x24, 0x7c, 0xa8, 0x11, 0x41,
+	0x98, 0xb5, 0x17, 0xa4, 0x47, 0x50, 0x96, 0x39, 0xd7, 0x65, 0x5e, 0x7b, 0x90, 0x9a, 0x88, 0x78,
+	0x1f, 0x9c, 0xea, 0xe2, 0x06, 0x32, 0xde, 0xd7, 0x96, 0x92, 0x84, 0x45, 0x63, 0x35, 0xb1, 0x2a,
+	0xf3, 0xde, 0x9d, 0x2f, 0x33, 0xb1, 0x69, 0x6b, 0x41, 0xa8, 0x43, 0x75, 0x9f, 0xf2, 0xd4, 0x3d,
+	0xef, 0x64, 0xcc, 0x2b, 0x33, 0xae, 0xa2, 0xb4, 0x47, 0x48, 0xf9, 0x40, 0x5b, 0x16, 0x94, 0x19,
+	0x7b, 0xc1, 0xf9, 0xbb, 0x50, 0xd0, 0xe9, 0x09, 0x63, 0x6f, 0x5f, 0xe1, 0xab, 0xc8, 0xb3, 0xa4,
+	0x81, 0x5c, 0xe1, 0xc2, 0x46, 0x10, 0xbc, 0x82, 0xe5, 0x3d, 0xe6, 0xba, 0xd4, 0x4a, 0xbf, 0xe4,
+	0x7b, 0x1b, 0xd7, 0x16, 0x72, 0x6d, 0x68, 0xab, 0x82, 0x6b, 0xca, 0x5c, 0xd0, 0x06, 0xf0, 0x70,
+	0x2f, 0xa0, 0x26, 0xa7, 0xfd, 0xc0, 0x1c, 0x0c, 0x1c, 0xab, 0x67, 0x9d, 0x52, 0x7b, 0xec, 0x8a,
+	0x6d, 0xfc, 0xc9, 0x76, 0xe6, 0x3b, 0xfe, 0x29, 0xc0, 0x94, 0xb7, 0x0f, 0xd1, 0xdb, 0x96, 0xb6,
+	0x89, 0xde, 0x66, 0xb3, 0x2a, 0x9f, 0x32, 0xc3, 0xee, 0xda, 0xe7, 0x35, 0xac, 0xc2, 0xe7, 0x00,
+	0x56, 0x32, 0x3d, 0xfa, 0xfd, 0x31, 0x1d, 0xd3, 0x90, 0x6c, 0xce, 0xf4, 0x27, 0x95, 0x53, 0xbe,
+	0x34, 0xf4, 0xf5, 0x48, 0x7b, 0x38, 0x15, 0x9f, 0x34, 0x50, 0x7e, 0x32, 0xbd, 0xf8, 0x5f, 0xfb,
+	0x99, 0xc1, 0x26, 0xfc, 0xfc, 0x16, 0xd4, 0xe5, 0x32, 0x48, 0xd5, 0x59, 0xd7, 0xa7, 0x69, 0x02,
+	0xd2, 0xee, 0x7d, 0x96, 0x23, 0xdf, 0xc2, 0x6a, 0x97, 0x06, 0x03, 0x16, 0x8c, 0xf0, 0xf1, 0xdb,
+	0xf1, 0x69, 0x30, 0xc9, 0x80, 0x8a, 0xa9, 0x9e, 0x3d, 0xc5, 0x9e, 0x3d, 0xd6, 0xd6, 0x45, 0xcf,
+	0x66, 0x52, 0xc8, 0x4d, 0xbb, 0x2c, 0x37, 0x71, 0x59, 0x97, 0xbc, 0x8d, 0x34, 0xb3, 0xb6, 0x53,
+	0x86, 0x82, 0xaa, 0x0f, 0xe5, 0x7d, 0xca, 0x5b, 0x97, 0x1c, 0x9f, 0xcb, 0x24, 0x89, 0x28, 0x79,
+	0xd4, 0x6f, 0xdc, 0x8f, 0x9e, 0xdd, 0x3a, 0xe5, 0xe3, 0xc0, 0x43, 0x4d, 0x98, 0x65, 0x4d, 0x71,
+	0x08, 0xd6, 0x6f, 0xf1, 0xcb, 0x44, 0x79, 0xf8, 0xc3, 0x77, 0x70, 0x3d, 0xca, 0x89, 0x28, 0x01,
+	0xf0, 0x9f, 0x4e, 0xb2, 0xaa, 0x9b, 0xd7, 0xd4, 0x14, 0x8d, 0xa0, 0xf7, 0x61, 0x7d, 0x9f, 0xf2,
+	0xc3, 0xd9, 0x1f, 0xe1, 0x64, 0x9f, 0x84, 0x9b, 0xd9, 0xcf, 0x4a, 0x33, 0x9f, 0x06, 0x69, 0xcf,
+	0xd0, 0x93, 0xa6, 0xbd, 0xa7, 0x42, 0x98, 0xcd, 0x28, 0x3c, 0x9e, 0xc2, 0xea, 0x4c, 0xfd, 0x6d,
+	0xbc, 0x65, 0xe6, 0x76, 0x26, 0xdb, 0x97, 0xb9, 0x8f, 0x77, 0xbf, 0x85, 0x4d, 0x16, 0x0c, 0x91,
+	0xc7, 0x62, 0x81, 0xbd, 0x2d, 0xff, 0x75, 0x27, 0xe2, 0xdd, 0xad, 0xbe, 0xc6, 0xb6, 0x28, 0x91,
+	0x3a, 0x87, 0xfd, 0x6f, 0x76, 0x86, 0x0e, 0x3f, 0x1d, 0x9f, 0x88, 0x09, 0xda, 0x89, 0x4c, 0x76,
+	0xa4, 0xc9, 0xa7, 0xea, 0xbf, 0x7d, 0xce, 0x3f, 0xdf, 0x19, 0xb2, 0xe8, 0xbf, 0x8e, 0xba, 0xb9,
+	0xee, 0xdc, 0x49, 0x01, 0x35, 0x9f, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x26, 0x5c, 0xa8,
+	0x33, 0x99, 0x34, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -3420,6 +4519,12 @@
 	CreateTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error)
 	RemoveTrafficQueues(ctx context.Context, in *tech_profile.TrafficQueues, opts ...grpc.CallOption) (*Empty, error)
 	EnableIndication(ctx context.Context, in *Empty, opts ...grpc.CallOption) (Openolt_EnableIndicationClient, error)
+	PerformGroupOperation(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error)
+	DeleteGroup(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error)
+	GetExtValue(ctx context.Context, in *ValueParam, opts ...grpc.CallOption) (*common.ReturnValues, error)
+	OnuItuPonAlarmSet(ctx context.Context, in *config.OnuItuPonAlarm, opts ...grpc.CallOption) (*Empty, error)
+	GetLogicalOnuDistanceZero(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error)
+	GetLogicalOnuDistance(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error)
 }
 
 type openoltClient struct {
@@ -3642,6 +4747,60 @@
 	return m, nil
 }
 
+func (c *openoltClient) PerformGroupOperation(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error) {
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/PerformGroupOperation", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) DeleteGroup(ctx context.Context, in *Group, opts ...grpc.CallOption) (*Empty, error) {
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/DeleteGroup", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetExtValue(ctx context.Context, in *ValueParam, opts ...grpc.CallOption) (*common.ReturnValues, error) {
+	out := new(common.ReturnValues)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetExtValue", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) OnuItuPonAlarmSet(ctx context.Context, in *config.OnuItuPonAlarm, opts ...grpc.CallOption) (*Empty, error) {
+	out := new(Empty)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/OnuItuPonAlarmSet", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetLogicalOnuDistanceZero(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error) {
+	out := new(OnuLogicalDistance)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetLogicalOnuDistanceZero", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *openoltClient) GetLogicalOnuDistance(ctx context.Context, in *Onu, opts ...grpc.CallOption) (*OnuLogicalDistance, error) {
+	out := new(OnuLogicalDistance)
+	err := c.cc.Invoke(ctx, "/openolt.Openolt/GetLogicalOnuDistance", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // OpenoltServer is the server API for Openolt service.
 type OpenoltServer interface {
 	DisableOlt(context.Context, *Empty) (*Empty, error)
@@ -3665,6 +4824,12 @@
 	CreateTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error)
 	RemoveTrafficQueues(context.Context, *tech_profile.TrafficQueues) (*Empty, error)
 	EnableIndication(*Empty, Openolt_EnableIndicationServer) error
+	PerformGroupOperation(context.Context, *Group) (*Empty, error)
+	DeleteGroup(context.Context, *Group) (*Empty, error)
+	GetExtValue(context.Context, *ValueParam) (*common.ReturnValues, error)
+	OnuItuPonAlarmSet(context.Context, *config.OnuItuPonAlarm) (*Empty, error)
+	GetLogicalOnuDistanceZero(context.Context, *Onu) (*OnuLogicalDistance, error)
+	GetLogicalOnuDistance(context.Context, *Onu) (*OnuLogicalDistance, error)
 }
 
 func RegisterOpenoltServer(s *grpc.Server, srv OpenoltServer) {
@@ -4052,6 +5217,114 @@
 	return x.ServerStream.SendMsg(m)
 }
 
+func _Openolt_PerformGroupOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Group)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).PerformGroupOperation(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/PerformGroupOperation",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).PerformGroupOperation(ctx, req.(*Group))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_DeleteGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Group)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).DeleteGroup(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/DeleteGroup",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).DeleteGroup(ctx, req.(*Group))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetExtValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ValueParam)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetExtValue(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/GetExtValue",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetExtValue(ctx, req.(*ValueParam))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_OnuItuPonAlarmSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(config.OnuItuPonAlarm)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).OnuItuPonAlarmSet(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/OnuItuPonAlarmSet",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).OnuItuPonAlarmSet(ctx, req.(*config.OnuItuPonAlarm))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetLogicalOnuDistanceZero_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Onu)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetLogicalOnuDistanceZero(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/GetLogicalOnuDistanceZero",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetLogicalOnuDistanceZero(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Openolt_GetLogicalOnuDistance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Onu)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(OpenoltServer).GetLogicalOnuDistance(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/openolt.Openolt/GetLogicalOnuDistance",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(OpenoltServer).GetLogicalOnuDistance(ctx, req.(*Onu))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _Openolt_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "openolt.Openolt",
 	HandlerType: (*OpenoltServer)(nil),
@@ -4136,6 +5409,30 @@
 			MethodName: "RemoveTrafficQueues",
 			Handler:    _Openolt_RemoveTrafficQueues_Handler,
 		},
+		{
+			MethodName: "PerformGroupOperation",
+			Handler:    _Openolt_PerformGroupOperation_Handler,
+		},
+		{
+			MethodName: "DeleteGroup",
+			Handler:    _Openolt_DeleteGroup_Handler,
+		},
+		{
+			MethodName: "GetExtValue",
+			Handler:    _Openolt_GetExtValue_Handler,
+		},
+		{
+			MethodName: "OnuItuPonAlarmSet",
+			Handler:    _Openolt_OnuItuPonAlarmSet_Handler,
+		},
+		{
+			MethodName: "GetLogicalOnuDistanceZero",
+			Handler:    _Openolt_GetLogicalOnuDistanceZero_Handler,
+		},
+		{
+			MethodName: "GetLogicalOnuDistance",
+			Handler:    _Openolt_GetLogicalOnuDistance_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
diff --git a/vendor/github.com/opencord/voltha-protos/v2/go/tech_profile/tech_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
similarity index 79%
rename from vendor/github.com/opencord/voltha-protos/v2/go/tech_profile/tech_profile.pb.go
rename to vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
index 5a78e1e..7d7c2ba 100644
--- a/vendor/github.com/opencord/voltha-protos/v2/go/tech_profile/tech_profile.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
@@ -322,6 +322,7 @@
 	AllocId              uint32              `protobuf:"fixed32,2,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
 	Scheduler            *SchedulerConfig    `protobuf:"bytes,3,opt,name=scheduler,proto3" json:"scheduler,omitempty"`
 	TrafficShapingInfo   *TrafficShapingInfo `protobuf:"bytes,4,opt,name=traffic_shaping_info,json=trafficShapingInfo,proto3" json:"traffic_shaping_info,omitempty"`
+	TechProfileId        uint32              `protobuf:"fixed32,5,opt,name=tech_profile_id,json=techProfileId,proto3" json:"tech_profile_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
 	XXX_unrecognized     []byte              `json:"-"`
 	XXX_sizecache        int32               `json:"-"`
@@ -380,6 +381,13 @@
 	return nil
 }
 
+func (m *TrafficScheduler) GetTechProfileId() uint32 {
+	if m != nil {
+		return m.TechProfileId
+	}
+	return 0
+}
+
 type TrafficSchedulers struct {
 	IntfId               uint32              `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
 	OnuId                uint32              `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
@@ -812,6 +820,7 @@
 	UniId                uint32          `protobuf:"fixed32,4,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
 	PortNo               uint32          `protobuf:"fixed32,5,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
 	TrafficQueues        []*TrafficQueue `protobuf:"bytes,6,rep,name=traffic_queues,json=trafficQueues,proto3" json:"traffic_queues,omitempty"`
+	TechProfileId        uint32          `protobuf:"fixed32,7,opt,name=tech_profile_id,json=techProfileId,proto3" json:"tech_profile_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
 	XXX_unrecognized     []byte          `json:"-"`
 	XXX_sizecache        int32           `json:"-"`
@@ -877,6 +886,13 @@
 	return nil
 }
 
+func (m *TrafficQueues) GetTechProfileId() uint32 {
+	if m != nil {
+		return m.TechProfileId
+	}
+	return 0
+}
+
 func init() {
 	proto.RegisterEnum("tech_profile.Direction", Direction_name, Direction_value)
 	proto.RegisterEnum("tech_profile.SchedulingPolicy", SchedulingPolicy_name, SchedulingPolicy_value)
@@ -898,75 +914,77 @@
 func init() { proto.RegisterFile("voltha_protos/tech_profile.proto", fileDescriptor_d019a68bffe14cae) }
 
 var fileDescriptor_d019a68bffe14cae = []byte{
-	// 1106 bytes of a gzipped FileDescriptorProto
+	// 1139 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0x1b, 0x45,
-	0x14, 0xf6, 0xda, 0x8d, 0x7f, 0x4e, 0x6c, 0x77, 0x33, 0x25, 0xc4, 0xa4, 0x0d, 0x04, 0x97, 0xaa,
-	0x91, 0x11, 0x31, 0x0a, 0x25, 0x37, 0x45, 0xaa, 0xec, 0x26, 0x52, 0x2c, 0xd1, 0x34, 0xdd, 0x04,
-	0x59, 0xe2, 0x82, 0xd5, 0x78, 0x67, 0x6c, 0x8f, 0xb4, 0x9e, 0x59, 0x66, 0xc7, 0x75, 0xd2, 0x2b,
-	0x6e, 0x78, 0x0b, 0x6e, 0x79, 0x01, 0xb8, 0x41, 0x3c, 0x11, 0x2f, 0xc0, 0x3d, 0x9a, 0xd9, 0x5d,
-	0xdb, 0xbb, 0x36, 0x29, 0x54, 0x70, 0x37, 0xe7, 0xdb, 0x6f, 0xce, 0x9c, 0x6f, 0xce, 0xcf, 0x0e,
-	0xec, 0xbf, 0x16, 0xbe, 0x1a, 0x63, 0x37, 0x90, 0x42, 0x89, 0xb0, 0xad, 0xa8, 0x37, 0xd6, 0xeb,
-	0x21, 0xf3, 0xe9, 0xa1, 0xc1, 0x50, 0x75, 0x19, 0xdb, 0x7d, 0x30, 0x12, 0x62, 0xe4, 0xd3, 0x36,
-	0x0e, 0x58, 0x1b, 0x73, 0x2e, 0x14, 0x56, 0x4c, 0xf0, 0x30, 0xe2, 0x36, 0x7f, 0xc8, 0xc3, 0xdd,
-	0x4b, 0x6f, 0x4c, 0xc9, 0xd4, 0xa7, 0xf2, 0xb9, 0xe0, 0x43, 0x36, 0x42, 0x5f, 0x42, 0x85, 0x30,
-	0x49, 0x3d, 0xcd, 0x6b, 0x58, 0xfb, 0xd6, 0x41, 0xfd, 0x68, 0xe7, 0x30, 0x75, 0xce, 0x49, 0xf2,
-	0xd9, 0x59, 0x30, 0xd1, 0x33, 0xa8, 0x61, 0x42, 0x98, 0x5e, 0x63, 0xdf, 0x1d, 0xcc, 0x1a, 0x79,
-	0xb3, 0x75, 0x37, 0xbd, 0xb5, 0x33, 0xa7, 0x74, 0xfb, 0x4e, 0x75, 0xb1, 0xa1, 0x3b, 0x43, 0xbb,
-	0x50, 0x0e, 0x24, 0x13, 0x92, 0xa9, 0x9b, 0x46, 0x61, 0xdf, 0x3a, 0x28, 0x39, 0x73, 0x1b, 0xbd,
-	0x0f, 0xc5, 0x19, 0x65, 0xa3, 0xb1, 0x6a, 0xdc, 0x31, 0x5f, 0x62, 0x0b, 0x75, 0xa0, 0x1a, 0xea,
-	0xf0, 0xdd, 0x40, 0xf8, 0xcc, 0xbb, 0x69, 0x6c, 0x98, 0x33, 0x3f, 0x4c, 0x9f, 0x19, 0x0b, 0x64,
-	0x7c, 0x74, 0x61, 0x58, 0xce, 0xa6, 0xd9, 0x13, 0x19, 0xcd, 0xdf, 0x2c, 0x40, 0x57, 0x12, 0x0f,
-	0x87, 0xcc, 0xbb, 0x1c, 0xe3, 0x80, 0xf1, 0x51, 0x8f, 0x0f, 0x05, 0xb2, 0xa1, 0xe0, 0x31, 0x69,
-	0xf4, 0x97, 0x1c, 0xbd, 0x34, 0xc8, 0x20, 0x34, 0xb2, 0x34, 0x32, 0x08, 0x35, 0x12, 0x30, 0x19,
-	0x07, 0xab, 0x97, 0x06, 0x19, 0x84, 0x71, 0x90, 0x7a, 0xa9, 0x91, 0x11, 0x93, 0x26, 0xb0, 0x92,
-	0xa3, 0x97, 0xe8, 0x0c, 0x00, 0x13, 0xe2, 0x0e, 0x66, 0x2e, 0xe3, 0xa4, 0x51, 0x34, 0x11, 0xb7,
-	0xd2, 0x11, 0xf7, 0xf8, 0x90, 0x4a, 0x49, 0x49, 0x72, 0x5b, 0xdd, 0x7e, 0x8f, 0x13, 0xe6, 0x99,
-	0xd4, 0x39, 0x65, 0x4c, 0x48, 0x77, 0xd6, 0xe3, 0xa4, 0xf9, 0xa7, 0x05, 0x76, 0x12, 0x7a, 0x92,
-	0xc4, 0x77, 0x4d, 0xdf, 0x07, 0x50, 0xc6, 0xbe, 0x2f, 0x3c, 0x97, 0x91, 0x58, 0x62, 0xc9, 0xd8,
-	0x3d, 0x82, 0x9e, 0x42, 0x25, 0x4c, 0xdc, 0x1b, 0xb1, 0x9b, 0x47, 0x7b, 0x6b, 0x6f, 0x38, 0x29,
-	0x21, 0x67, 0xc1, 0x47, 0x0e, 0xbc, 0xa7, 0xa2, 0x10, 0xdd, 0x30, 0xba, 0x5e, 0x97, 0xf1, 0xa1,
-	0x30, 0x57, 0xb4, 0x79, 0xb4, 0x9f, 0xf6, 0xb3, 0x9a, 0x07, 0x07, 0xa9, 0x15, 0xac, 0xf9, 0xbb,
-	0x05, 0x5b, 0x59, 0xdd, 0x21, 0xda, 0x81, 0x12, 0xe3, 0x6a, 0xa8, 0x05, 0x44, 0x59, 0x2b, 0x6a,
-	0xb3, 0x47, 0xd0, 0x36, 0x14, 0x05, 0x9f, 0x2e, 0x84, 0x6d, 0x08, 0x3e, 0x8d, 0xe0, 0x29, 0x67,
-	0x1a, 0x8e, 0xd2, 0xb5, 0x31, 0xe5, 0xac, 0x47, 0xb4, 0x9b, 0x40, 0x48, 0xe5, 0x72, 0x11, 0x27,
-	0xad, 0xa8, 0xcd, 0x73, 0x81, 0x4e, 0xa1, 0x3e, 0x57, 0xa2, 0x4f, 0x0d, 0x1b, 0x85, 0xfd, 0xc2,
-	0xc1, 0x66, 0xb6, 0xda, 0xb2, 0x81, 0x39, 0x35, 0xb5, 0x84, 0x84, 0xcd, 0x63, 0xd8, 0xbe, 0xc2,
-	0xcc, 0x3f, 0x91, 0x22, 0x38, 0x61, 0xa1, 0x87, 0x25, 0x89, 0xfb, 0x6e, 0x0f, 0xe0, 0xfb, 0x29,
-	0x9d, 0x52, 0x37, 0x64, 0x6f, 0x68, 0x2c, 0xa1, 0x62, 0x90, 0x4b, 0xf6, 0x86, 0x36, 0x7f, 0xb4,
-	0xc0, 0x76, 0x28, 0x49, 0xef, 0x79, 0x08, 0xb5, 0x09, 0xe3, 0xae, 0x1a, 0x4b, 0x1a, 0x8e, 0x85,
-	0x9f, 0x28, 0xaf, 0x4e, 0x18, 0xbf, 0x4a, 0x30, 0x43, 0xc2, 0xd7, 0x4b, 0xa4, 0x7c, 0x4c, 0xc2,
-	0xd7, 0x0b, 0xd2, 0x63, 0xb8, 0xab, 0x49, 0x81, 0x14, 0x03, 0x3c, 0x60, 0xfe, 0xa2, 0x09, 0xeb,
-	0x13, 0x7c, 0x7d, 0xb1, 0x40, 0x9b, 0xbf, 0x5a, 0xb0, 0xd5, 0x5f, 0x09, 0xe4, 0x09, 0x6c, 0x8c,
-	0x24, 0xa5, 0x51, 0xc5, 0xad, 0xdc, 0x49, 0x96, 0xee, 0x44, 0x64, 0x74, 0x0c, 0xc5, 0x1b, 0xea,
-	0xfb, 0x22, 0x1a, 0x16, 0x6f, 0xdf, 0x16, 0xb3, 0xd1, 0xe7, 0x50, 0x90, 0x94, 0xc4, 0xb5, 0xf8,
-	0xb6, 0x4d, 0x9a, 0xda, 0xfc, 0x23, 0x0f, 0xb5, 0x74, 0xc4, 0x5d, 0xa8, 0x93, 0x08, 0x48, 0x86,
-	0x47, 0xd4, 0x2c, 0xf7, 0xb3, 0xcd, 0x62, 0x38, 0xf1, 0xe4, 0xa8, 0x91, 0x65, 0x13, 0x7d, 0x07,
-	0x0d, 0x85, 0x99, 0xef, 0x12, 0x29, 0x02, 0x37, 0xf1, 0xe6, 0x19, 0xff, 0xb1, 0xa2, 0x87, 0x99,
-	0xe2, 0x58, 0x97, 0xf9, 0xb3, 0x9c, 0xb3, 0xad, 0xd6, 0x96, 0xc4, 0x39, 0x20, 0x49, 0x49, 0xd6,
-	0xf3, 0x3f, 0x92, 0x7d, 0x96, 0x73, 0x6c, 0x99, 0xcd, 0xd2, 0x2b, 0xb8, 0x37, 0x5b, 0xe3, 0x30,
-	0xea, 0xc5, 0x8f, 0xd2, 0x0e, 0xfb, 0x6b, 0x3c, 0x6e, 0xcd, 0xb2, 0x2e, 0xbb, 0xf6, 0xe2, 0x1a,
-	0x23, 0x6f, 0xcd, 0x9f, 0x0b, 0x50, 0x8d, 0x9b, 0xe0, 0x95, 0xae, 0xde, 0x77, 0x9d, 0x48, 0x7b,
-	0x00, 0x23, 0x3a, 0x31, 0xbd, 0x38, 0x6f, 0xdd, 0x4a, 0x8c, 0xf4, 0x88, 0x1e, 0x58, 0xc1, 0x80,
-	0x29, 0x77, 0x82, 0x03, 0x73, 0x23, 0x15, 0xa7, 0xa4, 0xed, 0x17, 0x38, 0x40, 0x8f, 0xa0, 0x8e,
-	0x69, 0xe8, 0x52, 0xee, 0xc9, 0x9b, 0xc0, 0x9c, 0xaa, 0x15, 0x96, 0x9d, 0x1a, 0xa6, 0xe1, 0xe9,
-	0x1c, 0xfc, 0x0f, 0x7e, 0x1e, 0xa9, 0x7f, 0x56, 0xf1, 0x6f, 0xff, 0x59, 0xa5, 0xd4, 0x3f, 0x6b,
-	0xb5, 0xf0, 0xca, 0xff, 0xba, 0xf0, 0xba, 0xd9, 0x5b, 0x6f, 0x54, 0x4c, 0x0e, 0xd7, 0xfb, 0x88,
-	0x1b, 0x21, 0xf1, 0x11, 0x99, 0xcd, 0x5f, 0x2c, 0xa8, 0x2d, 0xe7, 0xe9, 0xff, 0x9f, 0xa0, 0x9d,
-	0xc5, 0x04, 0x35, 0x73, 0x2d, 0x6c, 0x14, 0xcd, 0x04, 0xdd, 0x5d, 0x3b, 0x41, 0x4d, 0x50, 0xf3,
-	0xe9, 0x19, 0x85, 0xd8, 0xfa, 0x0a, 0x2a, 0xf3, 0x62, 0x41, 0x55, 0x28, 0x7f, 0x73, 0x71, 0x79,
-	0xe5, 0x9c, 0x76, 0x5e, 0xd8, 0x39, 0x54, 0x07, 0x38, 0x79, 0xd9, 0x3f, 0x8f, 0x6d, 0x0b, 0x6d,
-	0x41, 0xad, 0xdb, 0x3b, 0xe9, 0x39, 0xa7, 0xcf, 0xaf, 0x7a, 0x2f, 0xcf, 0x3b, 0x5f, 0xdb, 0xf9,
-	0xd6, 0x53, 0xb0, 0xb3, 0xf9, 0x44, 0x25, 0x28, 0xf4, 0x1d, 0xc7, 0xce, 0x21, 0x04, 0xf5, 0x4b,
-	0x25, 0x99, 0xa7, 0x2e, 0xe2, 0x0c, 0xda, 0x16, 0x02, 0x28, 0x9e, 0xdd, 0x0c, 0x24, 0x23, 0x76,
-	0xbe, 0xc5, 0xa1, 0xba, 0xfc, 0x7a, 0x41, 0xdb, 0xb0, 0xb5, 0x6c, 0xbb, 0xe7, 0x82, 0x53, 0x3b,
-	0x87, 0xee, 0xc1, 0xdd, 0x34, 0xdc, 0xb1, 0x2d, 0x74, 0x1f, 0x76, 0x52, 0x60, 0x97, 0x86, 0xea,
-	0x74, 0x38, 0x14, 0x52, 0xd9, 0xf9, 0x15, 0x47, 0x9d, 0xa9, 0x12, 0x76, 0xa1, 0xf5, 0x6c, 0x3e,
-	0xb1, 0xe2, 0x48, 0xab, 0x50, 0x4e, 0xe6, 0x87, 0x9d, 0x43, 0x35, 0xa8, 0xf4, 0xe7, 0xa6, 0xa5,
-	0x65, 0x38, 0x94, 0xd8, 0x79, 0x54, 0x86, 0x3b, 0xba, 0x75, 0xed, 0x42, 0xeb, 0x27, 0x0b, 0x1e,
-	0xdc, 0xf6, 0x92, 0x40, 0x8f, 0xe0, 0xe3, 0xdb, 0xbe, 0x27, 0x8a, 0x0e, 0xe0, 0x93, 0x5b, 0x69,
-	0x9d, 0x30, 0x9c, 0x4a, 0x4a, 0x6c, 0x0b, 0x7d, 0x0a, 0x8f, 0x6f, 0x65, 0x2e, 0xcb, 0xee, 0x1e,
-	0x7f, 0xfb, 0x64, 0xc4, 0xd4, 0x78, 0x3a, 0x38, 0xf4, 0xc4, 0xa4, 0x2d, 0x02, 0xca, 0x3d, 0x21,
-	0x49, 0x3b, 0x7a, 0xdf, 0x7e, 0x16, 0xbf, 0x6f, 0x5f, 0x1f, 0xb5, 0x47, 0x22, 0xf5, 0xca, 0x1d,
-	0x14, 0xcd, 0xa7, 0x2f, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x92, 0xf8, 0xb6, 0xb7, 0x0a, 0x0b,
-	0x00, 0x00,
+	0x14, 0xf6, 0xda, 0x8d, 0x7f, 0x4e, 0x6c, 0x67, 0x33, 0x25, 0xc4, 0xa4, 0x0d, 0x18, 0x97, 0xd2,
+	0xc8, 0x88, 0x18, 0xa5, 0xa5, 0x37, 0x45, 0xaa, 0xec, 0x26, 0x52, 0x56, 0xa2, 0x69, 0xba, 0x09,
+	0x32, 0xe2, 0x82, 0xd5, 0x7a, 0x67, 0xbc, 0x1e, 0x69, 0x3d, 0xb3, 0xcc, 0x8e, 0xeb, 0xa4, 0x57,
+	0xdc, 0xf0, 0x16, 0x70, 0xc9, 0x13, 0x70, 0x83, 0x78, 0x14, 0x9e, 0x80, 0xc7, 0x40, 0x33, 0xbb,
+	0x6b, 0x7b, 0x6d, 0x93, 0x42, 0x45, 0xef, 0xe6, 0x7c, 0xfb, 0x9d, 0x33, 0xe7, 0x7f, 0x16, 0x9a,
+	0xaf, 0x78, 0x20, 0x47, 0xae, 0x13, 0x0a, 0x2e, 0x79, 0xd4, 0x91, 0xc4, 0x1b, 0xa9, 0xf3, 0x90,
+	0x06, 0xe4, 0x50, 0x63, 0xa8, 0xba, 0x88, 0xed, 0xdd, 0xf5, 0x39, 0xf7, 0x03, 0xd2, 0x71, 0x43,
+	0xda, 0x71, 0x19, 0xe3, 0xd2, 0x95, 0x94, 0xb3, 0x28, 0xe6, 0xb6, 0x7e, 0xcc, 0xc3, 0xd6, 0x85,
+	0x37, 0x22, 0x78, 0x12, 0x10, 0xf1, 0x8c, 0xb3, 0x21, 0xf5, 0xd1, 0x97, 0x50, 0xc1, 0x54, 0x10,
+	0x4f, 0xf1, 0x1a, 0x46, 0xd3, 0x38, 0xa8, 0x1f, 0xed, 0x1e, 0x66, 0xee, 0x39, 0x4e, 0x3f, 0xdb,
+	0x73, 0x26, 0x7a, 0x0a, 0x35, 0x17, 0x63, 0xaa, 0xce, 0x6e, 0xe0, 0x0c, 0xa6, 0x8d, 0xbc, 0x56,
+	0xdd, 0xcb, 0xaa, 0x76, 0x67, 0x94, 0x5e, 0xdf, 0xae, 0xce, 0x15, 0x7a, 0x53, 0xb4, 0x07, 0xe5,
+	0x50, 0x50, 0x2e, 0xa8, 0xbc, 0x6e, 0x14, 0x9a, 0xc6, 0x41, 0xc9, 0x9e, 0xc9, 0xe8, 0x7d, 0x28,
+	0x4e, 0x09, 0xf5, 0x47, 0xb2, 0x71, 0x4b, 0x7f, 0x49, 0x24, 0xd4, 0x85, 0x6a, 0xa4, 0xdc, 0x77,
+	0x42, 0x1e, 0x50, 0xef, 0xba, 0xb1, 0xa1, 0xef, 0xfc, 0x30, 0x7b, 0x67, 0x12, 0x20, 0x65, 0xfe,
+	0xb9, 0x66, 0xd9, 0x9b, 0x5a, 0x27, 0x16, 0x5a, 0xbf, 0x1b, 0x80, 0x2e, 0x85, 0x3b, 0x1c, 0x52,
+	0xef, 0x62, 0xe4, 0x86, 0x94, 0xf9, 0x16, 0x1b, 0x72, 0x64, 0x42, 0xc1, 0xa3, 0x42, 0xc7, 0x5f,
+	0xb2, 0xd5, 0x51, 0x23, 0x83, 0x48, 0x87, 0xa5, 0x90, 0x41, 0xa4, 0x90, 0x90, 0x8a, 0xc4, 0x59,
+	0x75, 0xd4, 0xc8, 0x20, 0x4a, 0x9c, 0x54, 0x47, 0x85, 0xf8, 0x54, 0x68, 0xc7, 0x4a, 0xb6, 0x3a,
+	0xa2, 0x53, 0x00, 0x17, 0x63, 0x67, 0x30, 0x75, 0x28, 0xc3, 0x8d, 0xa2, 0xf6, 0xb8, 0x9d, 0xf5,
+	0xd8, 0x62, 0x43, 0x22, 0x04, 0xc1, 0x69, 0xb6, 0x7a, 0x7d, 0x8b, 0x61, 0xea, 0xe9, 0xd2, 0xd9,
+	0x65, 0x17, 0xe3, 0xde, 0xd4, 0x62, 0xb8, 0xf5, 0x4b, 0x1e, 0xcc, 0xd4, 0xf5, 0xb4, 0x88, 0x6f,
+	0x5b, 0xbe, 0x0f, 0xa0, 0xec, 0x06, 0x01, 0xf7, 0x1c, 0x8a, 0x93, 0x10, 0x4b, 0x5a, 0xb6, 0x30,
+	0x7a, 0x02, 0x95, 0x28, 0x35, 0xaf, 0x83, 0xdd, 0x3c, 0xda, 0x5f, 0x9b, 0xe1, 0xb4, 0x85, 0xec,
+	0x39, 0x1f, 0xd9, 0xf0, 0x9e, 0x8c, 0x5d, 0x74, 0xa2, 0x38, 0xbd, 0x0e, 0x65, 0x43, 0xae, 0x53,
+	0xb4, 0x79, 0xd4, 0xcc, 0xda, 0x59, 0xad, 0x83, 0x8d, 0xe4, 0x6a, 0x6d, 0x3e, 0x85, 0xad, 0x45,
+	0x35, 0xe5, 0x72, 0x9c, 0xdf, 0x9a, 0x82, 0xcf, 0x63, 0xd4, 0xc2, 0xad, 0x3f, 0x0c, 0xd8, 0x5e,
+	0xce, 0x4f, 0x84, 0x76, 0xa1, 0x44, 0x99, 0x1c, 0x2a, 0xad, 0xb8, 0xba, 0x45, 0x25, 0x5a, 0x18,
+	0xed, 0x40, 0x91, 0xb3, 0xc9, 0x3c, 0x01, 0x1b, 0x9c, 0x4d, 0x62, 0x78, 0xc2, 0xa8, 0x82, 0xe3,
+	0xb2, 0x6e, 0x4c, 0x18, 0xb5, 0xb0, 0x32, 0x13, 0x72, 0x21, 0x1d, 0xc6, 0x93, 0xcb, 0x8b, 0x4a,
+	0x3c, 0xe3, 0xe8, 0x04, 0xea, 0xb3, 0x88, 0xd5, 0xad, 0x51, 0xa3, 0xd0, 0x2c, 0x1c, 0x6c, 0x2e,
+	0x77, 0xe5, 0xb2, 0x63, 0x76, 0x4d, 0x2e, 0x20, 0x51, 0xeb, 0x31, 0xec, 0x5c, 0xba, 0x34, 0x38,
+	0x16, 0x3c, 0x3c, 0xa6, 0x91, 0xe7, 0x0a, 0x9c, 0xcc, 0xe7, 0x3e, 0xc0, 0x0f, 0x13, 0x32, 0x21,
+	0x4e, 0x44, 0x5f, 0x93, 0x24, 0x84, 0x8a, 0x46, 0x2e, 0xe8, 0x6b, 0xd2, 0xfa, 0xc9, 0x00, 0xd3,
+	0x26, 0x38, 0xab, 0x73, 0x0f, 0x6a, 0x63, 0xca, 0x1c, 0x39, 0x12, 0x24, 0x1a, 0xf1, 0x20, 0x8d,
+	0xbc, 0x3a, 0xa6, 0xec, 0x32, 0xc5, 0x34, 0xc9, 0xbd, 0x5a, 0x20, 0xe5, 0x13, 0x92, 0x7b, 0x35,
+	0x27, 0x3d, 0x80, 0x2d, 0x45, 0x0a, 0x05, 0x1f, 0xb8, 0x03, 0x1a, 0xcc, 0x87, 0xb5, 0x3e, 0x76,
+	0xaf, 0xce, 0xe7, 0x68, 0xeb, 0x37, 0x03, 0xb6, 0xfb, 0x2b, 0x8e, 0x3c, 0x82, 0x0d, 0x5f, 0x10,
+	0x12, 0x77, 0xe6, 0x4a, 0x4e, 0x96, 0xe9, 0x76, 0x4c, 0x46, 0x8f, 0xa1, 0x78, 0x4d, 0x82, 0x80,
+	0xc7, 0x4b, 0xe5, 0xcd, 0x6a, 0x09, 0x1b, 0x7d, 0x01, 0x05, 0x41, 0x70, 0xd2, 0xb3, 0x6f, 0x52,
+	0x52, 0xd4, 0xd6, 0x5f, 0x79, 0xa8, 0x65, 0x3d, 0xee, 0x41, 0x1d, 0xc7, 0x40, 0xba, 0x64, 0xe2,
+	0xa1, 0xba, 0xb3, 0x3c, 0x54, 0x9a, 0x93, 0x6c, 0x98, 0x1a, 0x5e, 0x14, 0xd1, 0xf7, 0xd0, 0x90,
+	0x2e, 0x0d, 0x1c, 0x2c, 0x78, 0xe8, 0xa4, 0xd6, 0x3c, 0x6d, 0x3f, 0x89, 0xe8, 0xde, 0x52, 0x73,
+	0xac, 0xab, 0xfc, 0x69, 0xce, 0xde, 0x91, 0x6b, 0x5b, 0xe2, 0x0c, 0x90, 0x20, 0x78, 0xd9, 0xf2,
+	0xbf, 0x0a, 0xfb, 0x34, 0x67, 0x9b, 0x62, 0xb9, 0x4a, 0x2f, 0xe1, 0xf6, 0x74, 0x8d, 0xc1, 0x78,
+	0x66, 0x3f, 0xca, 0x1a, 0xec, 0xaf, 0xb1, 0xb8, 0x3d, 0x5d, 0x36, 0xd9, 0x33, 0xe7, 0x69, 0x8c,
+	0xad, 0xb5, 0x7e, 0x2d, 0x40, 0x35, 0x19, 0x82, 0x97, 0xaa, 0x7b, 0xdf, 0x76, 0x73, 0xed, 0x03,
+	0xf8, 0x64, 0xac, 0x67, 0x71, 0x36, 0xba, 0x95, 0x04, 0xb1, 0xb0, 0x5a, 0x6c, 0xe1, 0x80, 0x4a,
+	0x67, 0xec, 0x86, 0x3a, 0x23, 0x15, 0xbb, 0xa4, 0xe4, 0xe7, 0x6e, 0x88, 0xee, 0x43, 0xdd, 0x25,
+	0x91, 0x43, 0x98, 0x27, 0xae, 0x43, 0x7d, 0xab, 0x8a, 0xb0, 0x6c, 0xd7, 0x5c, 0x12, 0x9d, 0xcc,
+	0xc0, 0xff, 0xe1, 0x91, 0xc9, 0xbc, 0x6d, 0xc5, 0x7f, 0x7c, 0xdb, 0x4a, 0x99, 0xb7, 0x6d, 0xb5,
+	0xf1, 0xca, 0xff, 0xb9, 0xf1, 0x7a, 0xcb, 0x59, 0x6f, 0x54, 0x74, 0x0d, 0xd7, 0xdb, 0x48, 0x06,
+	0x21, 0xb5, 0x11, 0x8b, 0xad, 0x3f, 0x0d, 0xa8, 0x2d, 0xd6, 0xe9, 0xdd, 0x6f, 0xd0, 0xee, 0x7c,
+	0x83, 0xea, 0xbd, 0x16, 0x35, 0x8a, 0x7a, 0x83, 0xee, 0xad, 0xdd, 0xa0, 0xda, 0xa9, 0xd9, 0xf6,
+	0x4c, 0x5c, 0x5c, 0xf3, 0x44, 0x94, 0xd6, 0x3c, 0x11, 0xed, 0xaf, 0xa0, 0x32, 0x6b, 0x2a, 0x54,
+	0x85, 0xf2, 0x37, 0xe7, 0x17, 0x97, 0xf6, 0x49, 0xf7, 0xb9, 0x99, 0x43, 0x75, 0x80, 0xe3, 0x17,
+	0xfd, 0xb3, 0x44, 0x36, 0xd0, 0x36, 0xd4, 0x7a, 0xd6, 0xb1, 0x65, 0x9f, 0x3c, 0xbb, 0xb4, 0x5e,
+	0x9c, 0x75, 0xbf, 0x36, 0xf3, 0xed, 0x27, 0x60, 0x2e, 0xd7, 0x1d, 0x95, 0xa0, 0xd0, 0xb7, 0x6d,
+	0x33, 0x87, 0x10, 0xd4, 0x2f, 0xa4, 0xa0, 0x9e, 0x3c, 0x4f, 0x2a, 0x6d, 0x1a, 0x08, 0xa0, 0x78,
+	0x7a, 0x3d, 0x10, 0x14, 0x9b, 0xf9, 0x36, 0x83, 0xea, 0xe2, 0xdf, 0x10, 0xda, 0x81, 0xed, 0x45,
+	0xd9, 0x39, 0xe3, 0x8c, 0x98, 0x39, 0x74, 0x1b, 0xb6, 0xb2, 0x70, 0xd7, 0x34, 0xd0, 0x1d, 0xd8,
+	0xcd, 0x80, 0x3d, 0x12, 0xc9, 0x93, 0xe1, 0x90, 0x0b, 0x69, 0xe6, 0x57, 0x0c, 0x75, 0x27, 0x92,
+	0x9b, 0x85, 0xf6, 0xd3, 0xd9, 0x66, 0x4b, 0x3c, 0xad, 0x42, 0x39, 0xdd, 0x33, 0x66, 0x0e, 0xd5,
+	0xa0, 0xd2, 0x9f, 0x89, 0x86, 0x0a, 0xc3, 0x26, 0xd8, 0xcc, 0xa3, 0x32, 0xdc, 0x52, 0x23, 0x6e,
+	0x16, 0xda, 0x3f, 0x1b, 0x70, 0xf7, 0xa6, 0x3f, 0x13, 0x74, 0x1f, 0x3e, 0xbe, 0xe9, 0x7b, 0x1a,
+	0xd1, 0x01, 0x7c, 0x72, 0x23, 0xad, 0x1b, 0x45, 0x13, 0x41, 0xb0, 0x69, 0xa0, 0xcf, 0xe0, 0xc1,
+	0x8d, 0xcc, 0xc5, 0xb0, 0x7b, 0xdf, 0x42, 0x93, 0x0b, 0xff, 0x90, 0x87, 0x84, 0x79, 0x5c, 0xe0,
+	0xc3, 0xf8, 0x47, 0x39, 0xd3, 0x32, 0xdf, 0x3d, 0xf2, 0xa9, 0x1c, 0x4d, 0x06, 0x87, 0x1e, 0x1f,
+	0x77, 0x52, 0x62, 0x27, 0x26, 0x7e, 0x9e, 0xfc, 0x51, 0xbf, 0x7a, 0xd8, 0xf1, 0x79, 0xe6, 0xbf,
+	0x7a, 0x50, 0xd4, 0x9f, 0x1e, 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x75, 0x37, 0xf5, 0x7c,
+	0x0b, 0x00, 0x00,
 }
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 8b82270..54d7b54 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -82,9 +82,11 @@
 github.com/opencord/cordctl/pkg/format
 # github.com/opencord/omci-sim v0.0.4
 github.com/opencord/omci-sim
-# github.com/opencord/voltha-protos/v2 v2.1.2
-github.com/opencord/voltha-protos/v2/go/openolt
-github.com/opencord/voltha-protos/v2/go/tech_profile
+# github.com/opencord/voltha-protos/v3 v3.4.5
+github.com/opencord/voltha-protos/v3/go/common
+github.com/opencord/voltha-protos/v3/go/ext/config
+github.com/opencord/voltha-protos/v3/go/openolt
+github.com/opencord/voltha-protos/v3/go/tech_profile
 # github.com/pierrec/lz4 v2.4.1+incompatible
 github.com/pierrec/lz4
 github.com/pierrec/lz4/internal/xxh32
