diff --git a/Makefile b/Makefile
index 21d73e0..5c555f9 100644
--- a/Makefile
+++ b/Makefile
@@ -231,10 +231,10 @@
 
 setup_tools:
 	@echo "Downloading dependencies..."
-	@${GO} mod download github.com/grpc-ecosystem/grpc-gateway github.com/opencord/voltha-protos/v2
+	@${GO} mod download github.com/grpc-ecosystem/grpc-gateway github.com/opencord/voltha-protos/v3
 	@echo "Dependencies downloaded OK"
 
-VOLTHA_PROTOS ?= $(shell ${GO} list -f '{{ .Dir }}' -m github.com/opencord/voltha-protos/v2)
+VOLTHA_PROTOS ?= $(shell ${GO} list -f '{{ .Dir }}' -m github.com/opencord/voltha-protos/v3)
 GOOGLEAPI     ?= $(shell ${GO} list -f '{{ .Dir }}' -m github.com/grpc-ecosystem/grpc-gateway)
 
 .PHONY: api/openolt/openolt.pb.go api/bbsim/bbsim.pb.go api/bbsim/bbsim.pb.gw.go api/legacy/bbsim.pb.go api/legacy/bbsim.pb.gw.go docs/swagger/bbsim/bbsim.swagger.json docs/swagger/leagacy/bbsim.swagger.json
diff --git a/api/bbsim/bbsim.pb.go b/api/bbsim/bbsim.pb.go
index d6e86a0..ba67479 100644
--- a/api/bbsim/bbsim.pb.go
+++ b/api/bbsim/bbsim.pb.go
@@ -7,8 +7,8 @@
 	context "context"
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	openolt "github.com/opencord/voltha-protos/v2/go/openolt"
-	tech_profile "github.com/opencord/voltha-protos/v2/go/tech_profile"
+	openolt "github.com/opencord/voltha-protos/v3/go/openolt"
+	tech_profile "github.com/opencord/voltha-protos/v3/go/tech_profile"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
 	status "google.golang.org/grpc/status"
@@ -423,6 +423,7 @@
 	EapolState           string   `protobuf:"bytes,10,opt,name=EapolState,proto3" json:"EapolState,omitempty"`
 	DhcpState            string   `protobuf:"bytes,11,opt,name=DhcpState,proto3" json:"DhcpState,omitempty"`
 	InternalState        string   `protobuf:"bytes,12,opt,name=InternalState,proto3" json:"InternalState,omitempty"`
+	IGMPState            string   `protobuf:"bytes,13,opt,name=IGMPState,proto3" json:"IGMPState,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -537,6 +538,13 @@
 	return ""
 }
 
+func (m *Service) GetIGMPState() string {
+	if m != nil {
+		return m.IGMPState
+	}
+	return ""
+}
+
 type ONUTrafficSchedulers struct {
 	TraffSchedulers      *tech_profile.TrafficSchedulers `protobuf:"bytes,1,opt,name=traffSchedulers,proto3" json:"traffSchedulers,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
@@ -1242,102 +1250,102 @@
 func init() { proto.RegisterFile("api/bbsim/bbsim.proto", fileDescriptor_ef7750073d18011b) }
 
 var fileDescriptor_ef7750073d18011b = []byte{
-	// 1508 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xcd, 0x6e, 0xdb, 0xc6,
-	0x16, 0xd6, 0x8f, 0xf5, 0x77, 0x64, 0xc9, 0xf4, 0x24, 0x76, 0x08, 0xc7, 0xf7, 0x46, 0xe0, 0xcd,
-	0xbd, 0x70, 0x82, 0x1b, 0xa7, 0xb1, 0xfb, 0x93, 0x2c, 0x69, 0x89, 0x56, 0x58, 0xcb, 0x43, 0x61,
-	0x28, 0x39, 0xc8, 0x8a, 0xa0, 0xa5, 0xb1, 0x4d, 0x80, 0x22, 0x15, 0x92, 0xb2, 0x91, 0x07, 0xe8,
-	0x8b, 0xf4, 0x65, 0xba, 0x2d, 0xd0, 0x7d, 0x77, 0x7d, 0x8c, 0x02, 0xc5, 0x0c, 0x87, 0x14, 0x69,
-	0x29, 0x85, 0xdb, 0x4d, 0x37, 0x02, 0xcf, 0x77, 0xfe, 0xcf, 0x99, 0x39, 0x67, 0x04, 0x3b, 0xf6,
-	0xdc, 0x79, 0x7d, 0x79, 0x19, 0x3a, 0xb3, 0xf8, 0xf7, 0x70, 0x1e, 0xf8, 0x91, 0x8f, 0x2a, 0x9c,
-	0xd8, 0x7b, 0x7a, 0xeb, 0xbb, 0xd1, 0x8d, 0x6d, 0x71, 0x30, 0x7c, 0xed, 0xcf, 0xa9, 0xe7, 0xbb,
-	0x51, 0x2c, 0xb3, 0xd7, 0xc9, 0x33, 0x23, 0x3a, 0xb9, 0x61, 0xdf, 0x57, 0x8e, 0x4b, 0x63, 0x09,
-	0xe5, 0x3b, 0xa8, 0x0d, 0x0d, 0x3c, 0xf4, 0x83, 0x08, 0xb5, 0xa1, 0xa4, 0xf7, 0xe4, 0x62, 0xa7,
-	0x78, 0x50, 0x21, 0x25, 0xbd, 0x87, 0xf6, 0xa1, 0x61, 0xcc, 0x69, 0x60, 0x46, 0x76, 0x44, 0xe5,
-	0x52, 0xa7, 0x78, 0xd0, 0x20, 0x4b, 0x80, 0x29, 0x62, 0xac, 0xff, 0x0d, 0xc5, 0xdf, 0x8a, 0x50,
-	0x36, 0xdc, 0x55, 0x2d, 0x05, 0x36, 0x4d, 0x1a, 0x38, 0xb6, 0x8b, 0x17, 0xb3, 0x4b, 0x1a, 0x08,
-	0xc5, 0x1c, 0x96, 0xb7, 0x5c, 0xbe, 0x67, 0x19, 0x3d, 0x87, 0x96, 0xee, 0x45, 0x34, 0xf0, 0x6c,
-	0x37, 0x96, 0xd8, 0xe0, 0x12, 0x79, 0x90, 0xfb, 0x1d, 0xca, 0x35, 0xce, 0x2a, 0xe9, 0x43, 0xf4,
-	0x12, 0xea, 0x22, 0x91, 0x50, 0xae, 0x74, 0xca, 0x07, 0xcd, 0xa3, 0xf6, 0x61, 0x5c, 0x67, 0x01,
-	0x93, 0x94, 0xcf, 0x64, 0x45, 0xb5, 0x42, 0xb9, 0x9a, 0x93, 0x15, 0x30, 0x49, 0xf9, 0xca, 0xef,
-	0x2c, 0x4f, 0x3c, 0xfe, 0xc7, 0xf2, 0xdc, 0x87, 0xc6, 0xd0, 0xf7, 0x58, 0x2c, 0x7a, 0x4f, 0xae,
-	0x70, 0xf7, 0x4b, 0x80, 0x71, 0xdf, 0xdf, 0xa9, 0xd3, 0x69, 0x40, 0xc3, 0x50, 0xae, 0xc7, 0x1e,
-	0x52, 0x00, 0xed, 0x42, 0x95, 0xc9, 0x61, 0x5f, 0x6e, 0x70, 0x45, 0x41, 0xb1, 0xfc, 0x43, 0x1a,
-	0xdc, 0x3a, 0x13, 0x1a, 0xca, 0x90, 0xcb, 0xdf, 0x8c, 0x61, 0x92, 0xf2, 0x95, 0x5f, 0x4a, 0x50,
-	0x13, 0x28, 0x42, 0xb0, 0x81, 0xed, 0x19, 0xe5, 0x55, 0x68, 0x10, 0xfe, 0x9d, 0x8f, 0xa0, 0x74,
-	0x3f, 0x82, 0xc7, 0x50, 0x31, 0xbc, 0x85, 0xe9, 0x89, 0xec, 0x63, 0x82, 0xd9, 0x31, 0x47, 0xf6,
-	0x35, 0x4f, 0xb8, 0x42, 0xf8, 0x37, 0xc3, 0xba, 0x0c, 0x8b, 0x53, 0xe4, 0xdf, 0xe8, 0xdf, 0x00,
-	0x98, 0xd2, 0x69, 0xa8, 0xd9, 0x73, 0xdf, 0x95, 0xab, 0x9d, 0xe2, 0x41, 0x9d, 0x64, 0x10, 0xe6,
-	0x9b, 0x53, 0xbd, 0x9b, 0xc9, 0x9c, 0x1f, 0x85, 0x3a, 0x59, 0x02, 0x29, 0x57, 0xbf, 0x9e, 0xcd,
-	0x79, 0x6d, 0x12, 0x2e, 0x03, 0x90, 0x0c, 0xb5, 0x3e, 0x9d, 0xb1, 0x82, 0x88, 0xe2, 0x24, 0x24,
-	0xf3, 0xca, 0xcd, 0xc7, 0x4d, 0x01, 0x1e, 0x78, 0x06, 0x61, 0x76, 0x99, 0xfd, 0x98, 0xdd, 0x8c,
-	0x33, 0x4e, 0x81, 0xd5, 0xae, 0x6e, 0xae, 0xe9, 0xaa, 0x62, 0xc3, 0x63, 0x03, 0x8f, 0x47, 0x81,
-	0x7d, 0x75, 0xe5, 0x4c, 0xcc, 0xc9, 0x0d, 0x9d, 0x2e, 0x5c, 0x1a, 0x84, 0x48, 0x87, 0xad, 0x88,
-	0x81, 0x4b, 0x88, 0x17, 0xbb, 0x79, 0xf4, 0xec, 0x30, 0x77, 0xeb, 0x57, 0x34, 0xc9, 0x7d, 0x3d,
-	0xe5, 0x00, 0x36, 0x0c, 0x3c, 0x0e, 0x51, 0x07, 0x2a, 0x4e, 0x44, 0x67, 0xcc, 0x10, 0xeb, 0x34,
-	0x88, 0x4e, 0x1b, 0x78, 0x4c, 0x62, 0x86, 0xf2, 0x15, 0xd4, 0x45, 0x87, 0x43, 0xf4, 0x3c, 0x2f,
-	0x7d, 0xff, 0x5c, 0xa4, 0x1a, 0xc0, 0xf4, 0xe9, 0xa7, 0x05, 0x0d, 0xa3, 0x95, 0xab, 0x50, 0x5c,
-	0xbd, 0x0a, 0xca, 0x4b, 0x80, 0xa1, 0x81, 0x13, 0x8d, 0xcc, 0xa1, 0x9e, 0x72, 0xf1, 0xd6, 0xf2,
-	0x50, 0x4f, 0x95, 0x5f, 0xcb, 0xd0, 0x50, 0x5d, 0x3b, 0x98, 0x8d, 0x3e, 0xcf, 0xa9, 0xf2, 0x73,
-	0x19, 0x2a, 0xec, 0x23, 0x44, 0x35, 0x28, 0x0f, 0x0c, 0x53, 0x2a, 0xa0, 0x36, 0x40, 0xef, 0xa3,
-	0x8e, 0xfb, 0x56, 0x5f, 0x35, 0x87, 0x52, 0x11, 0xb5, 0xa0, 0x61, 0xe0, 0xb1, 0xa5, 0x0e, 0x54,
-	0x72, 0x2e, 0x95, 0xd0, 0x13, 0x78, 0xc4, 0x48, 0x73, 0xa4, 0x92, 0xd1, 0x78, 0x68, 0x9d, 0xaa,
-	0xfa, 0x60, 0x4c, 0x34, 0xa9, 0x8c, 0x76, 0x01, 0x71, 0x86, 0xde, 0xc7, 0xea, 0xc0, 0xea, 0x69,
-	0x7d, 0xa2, 0xf6, 0x34, 0x69, 0x23, 0x51, 0xe8, 0x11, 0xfd, 0x74, 0x64, 0x19, 0xa7, 0xd6, 0x07,
-	0x1d, 0xf7, 0x8c, 0x0f, 0x52, 0x05, 0xed, 0x83, 0xcc, 0x18, 0x03, 0xc3, 0x34, 0x19, 0x6e, 0x9c,
-	0x77, 0x75, 0xab, 0xfb, 0x5e, 0xc5, 0x58, 0x1b, 0x48, 0xd5, 0xd4, 0x0f, 0x37, 0x67, 0xa6, 0x7e,
-	0x6a, 0xe8, 0x05, 0xfc, 0x97, 0x31, 0x46, 0x44, 0xc5, 0xe6, 0xb9, 0x6e, 0x9a, 0xba, 0x81, 0x2d,
-	0x1d, 0x8f, 0x34, 0x72, 0xaa, 0x11, 0x0d, 0x77, 0x35, 0xeb, 0x83, 0x4a, 0xb0, 0x8e, 0xfb, 0x52,
-	0x1d, 0xed, 0xc1, 0x2e, 0x0f, 0xbd, 0x3b, 0xd2, 0x2f, 0xd4, 0x11, 0x13, 0x4c, 0xcc, 0x34, 0x90,
-	0xcc, 0x0f, 0x89, 0x35, 0x24, 0x46, 0x57, 0x33, 0x4d, 0x96, 0xaf, 0x46, 0x88, 0x41, 0x24, 0x40,
-	0x1d, 0xd8, 0xcf, 0xc6, 0x75, 0xa6, 0x7d, 0xb4, 0xcc, 0x8f, 0xb8, 0x9b, 0xea, 0x36, 0xd1, 0x0e,
-	0x6c, 0x33, 0x09, 0x7d, 0x34, 0xb6, 0x86, 0x06, 0x66, 0xb5, 0x18, 0x99, 0xd2, 0x26, 0xda, 0x86,
-	0x56, 0x5a, 0x29, 0xa6, 0x2e, 0xb5, 0xee, 0x43, 0x27, 0x52, 0x3b, 0x49, 0x2c, 0x81, 0x86, 0x5d,
-	0x8b, 0x65, 0x21, 0x6d, 0x25, 0xf5, 0xc8, 0x31, 0xba, 0x22, 0x2a, 0x09, 0x21, 0x68, 0x67, 0xb9,
-	0xa7, 0xba, 0xb4, 0x8d, 0x1e, 0xc1, 0x56, 0x16, 0x53, 0xcf, 0x75, 0x09, 0x29, 0x6f, 0xa1, 0xcd,
-	0xfb, 0x3b, 0xb4, 0x03, 0x7b, 0x46, 0x23, 0x1a, 0x20, 0x09, 0xca, 0x67, 0xf4, 0xb3, 0x38, 0x39,
-	0xec, 0x93, 0x4d, 0x8e, 0x0b, 0xdb, 0x5d, 0x24, 0x9b, 0x27, 0x26, 0x94, 0x1f, 0x8b, 0xdc, 0x1e,
-	0xd7, 0xce, 0x1c, 0xa6, 0xf4, 0xb4, 0x08, 0x0b, 0x4b, 0xe0, 0x41, 0x73, 0x7a, 0x17, 0xaa, 0xec,
-	0x5a, 0x2e, 0x42, 0x31, 0xa6, 0x04, 0x85, 0xbe, 0x01, 0x48, 0x43, 0x0c, 0xe5, 0x0d, 0x7e, 0x23,
-	0x76, 0xc4, 0x8d, 0xc8, 0x27, 0x40, 0x32, 0x82, 0xca, 0x27, 0xd8, 0x32, 0x06, 0xa3, 0x5c, 0x8c,
-	0x1d, 0x68, 0xf2, 0x01, 0x70, 0x65, 0x4f, 0xa8, 0x58, 0x23, 0x2d, 0x92, 0x85, 0xd2, 0xb9, 0xc1,
-	0x48, 0x9e, 0x49, 0x29, 0x33, 0x37, 0x12, 0xf0, 0x4b, 0x91, 0x2a, 0x3f, 0x14, 0xa1, 0x75, 0x41,
-	0x83, 0xd0, 0xf1, 0x3d, 0x91, 0x93, 0x0c, 0xb5, 0xdb, 0x18, 0x10, 0x35, 0x49, 0x48, 0x56, 0xaf,
-	0xcb, 0x85, 0xe3, 0x4e, 0x47, 0xce, 0x2c, 0xdd, 0xeb, 0x29, 0xc0, 0xa6, 0xdf, 0xc4, 0x9f, 0xcd,
-	0x9c, 0xe8, 0xbd, 0x1d, 0xde, 0x08, 0x2f, 0x19, 0x84, 0x69, 0x5f, 0x3b, 0x91, 0x08, 0x22, 0xde,
-	0x58, 0x4b, 0x40, 0x79, 0x0b, 0xf5, 0x81, 0x7f, 0x3d, 0xa0, 0xb7, 0xd4, 0x65, 0x1d, 0x74, 0xd9,
-	0x87, 0xf0, 0x1f, 0x13, 0x2c, 0x83, 0x89, 0xed, 0xba, 0xa2, 0x13, 0x75, 0x22, 0x28, 0x45, 0x83,
-	0x3a, 0xa1, 0xe1, 0xdc, 0xf7, 0x42, 0x8a, 0x9e, 0x41, 0x33, 0xe4, 0xf6, 0xac, 0x89, 0x3f, 0xa5,
-	0x62, 0xe9, 0x42, 0x0c, 0x75, 0xfd, 0x29, 0x65, 0xc9, 0xcd, 0x68, 0x18, 0xda, 0xd7, 0x49, 0x02,
-	0x09, 0xa9, 0x84, 0xd0, 0x64, 0xe3, 0x3d, 0xa9, 0xfb, 0x0b, 0xa8, 0x1a, 0xde, 0x82, 0xd0, 0x4f,
-	0x62, 0x8c, 0x6e, 0x67, 0xa6, 0x5f, 0x2c, 0x42, 0x84, 0x00, 0x7a, 0x07, 0x9b, 0xe6, 0xe2, 0x52,
-	0x9d, 0x44, 0x8e, 0xef, 0x5d, 0xd8, 0x2e, 0x37, 0xdc, 0x4e, 0xdb, 0x9d, 0xb2, 0xf8, 0x28, 0x22,
-	0x39, 0x51, 0xe5, 0x0c, 0x2a, 0xa7, 0xae, 0x7f, 0x17, 0xa2, 0x7f, 0x01, 0x5c, 0xb9, 0xfe, 0x9d,
-	0x35, 0xf1, 0x17, 0x5e, 0x94, 0x0c, 0x36, 0x86, 0x74, 0x19, 0x80, 0xfe, 0x03, 0x15, 0x46, 0xb0,
-	0x3d, 0xc9, 0x8e, 0x52, 0xeb, 0x30, 0x79, 0xe6, 0x31, 0x6d, 0x12, 0xf3, 0x94, 0x1a, 0x54, 0xb4,
-	0xd9, 0x3c, 0xfa, 0xfc, 0xf2, 0x0d, 0xb4, 0xf3, 0x5e, 0x51, 0x1d, 0x36, 0xbe, 0x37, 0x74, 0x2c,
-	0x15, 0x50, 0x03, 0x2a, 0x03, 0x4d, 0xbd, 0xd0, 0xa4, 0x22, 0x02, 0xa8, 0x32, 0xf0, 0xe2, 0x58,
-	0x2a, 0x1d, 0xfd, 0xd4, 0x80, 0xca, 0xc9, 0x89, 0xe9, 0xcc, 0xd0, 0x6b, 0xa8, 0x89, 0xf3, 0x80,
-	0x36, 0x45, 0x0a, 0xdc, 0xea, 0xde, 0x63, 0x41, 0xe5, 0x4e, 0x8b, 0x52, 0x40, 0x6f, 0xa0, 0x69,
-	0xd2, 0x28, 0x6d, 0xde, 0x96, 0x10, 0x4b, 0x80, 0xbd, 0xfb, 0x80, 0x52, 0x40, 0xcf, 0xa1, 0xda,
-	0xa7, 0x11, 0x7b, 0x04, 0xe6, 0x5d, 0xa4, 0x2b, 0xc6, 0x8d, 0x94, 0x02, 0x7a, 0x05, 0x30, 0xf4,
-	0xef, 0x68, 0xe0, 0x7b, 0xab, 0x92, 0x89, 0xd1, 0xa4, 0xf3, 0x4a, 0x01, 0x1d, 0x42, 0xd3, 0xbc,
-	0x59, 0x44, 0x53, 0xff, 0xee, 0x61, 0xf2, 0xff, 0x87, 0x06, 0xa1, 0x97, 0xbe, 0x1f, 0x3d, 0x48,
-	0xfa, 0x45, 0x1c, 0x32, 0x1e, 0xa3, 0xd5, 0x93, 0xb0, 0x97, 0x59, 0x8d, 0x4a, 0x01, 0xfd, 0x8f,
-	0x3d, 0x10, 0x22, 0xbe, 0x42, 0xf3, 0x66, 0x9b, 0x4b, 0xb1, 0x30, 0x0e, 0xb8, 0x4f, 0xa3, 0x74,
-	0x81, 0xae, 0x0f, 0x21, 0x61, 0x2b, 0x05, 0xf4, 0x2d, 0xb4, 0x99, 0x5d, 0x6f, 0x91, 0xaa, 0xac,
-	0x09, 0x65, 0x8d, 0xde, 0x71, 0xa6, 0x30, 0xeb, 0xe3, 0x5f, 0x93, 0xef, 0x11, 0x6c, 0x25, 0x4a,
-	0xaa, 0xeb, 0xae, 0x49, 0x66, 0x8d, 0xce, 0x3b, 0xd8, 0xce, 0x38, 0x0a, 0x0d, 0x6f, 0x68, 0xe0,
-	0xd4, 0xdd, 0x72, 0x89, 0xaf, 0x77, 0x97, 0xf6, 0xfa, 0xc1, 0x21, 0xbe, 0x81, 0xb6, 0xd0, 0x79,
-	0x70, 0x84, 0x6f, 0x41, 0x5a, 0xba, 0xf9, 0x4b, 0x01, 0x7e, 0x0d, 0x9b, 0x84, 0x86, 0x91, 0x1d,
-	0x44, 0xf1, 0x0b, 0xf2, 0x61, 0x21, 0x1e, 0x43, 0x53, 0x68, 0xf1, 0x87, 0xe5, 0xc3, 0x94, 0x4e,
-	0x60, 0xc7, 0xe4, 0x7d, 0xe6, 0x8b, 0x40, 0xf7, 0xa6, 0xce, 0xc4, 0x66, 0x57, 0x19, 0xed, 0x2e,
-	0xd5, 0xb3, 0x3b, 0xe2, 0x4f, 0x6c, 0xb8, 0xd1, 0x17, 0x6d, 0xe4, 0xf7, 0xcc, 0x3a, 0x1b, 0xaf,
-	0xa0, 0xde, 0xa7, 0x51, 0x3c, 0x9f, 0xd6, 0x44, 0x9e, 0x14, 0x9b, 0x0b, 0xf0, 0xda, 0x6e, 0x75,
-	0x6f, 0x6c, 0xef, 0x9a, 0xb2, 0x31, 0x1a, 0x3f, 0x69, 0x91, 0x10, 0xc9, 0x0c, 0xd6, 0x75, 0x8e,
-	0xce, 0xe0, 0x49, 0x7c, 0xb0, 0x57, 0x9f, 0xb5, 0x6b, 0xfc, 0x3e, 0x5d, 0x42, 0x2b, 0xf2, 0x4a,
-	0xe1, 0xb2, 0xca, 0xff, 0xd7, 0x1e, 0xff, 0x11, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x5c, 0x3f, 0xfa,
-	0x36, 0x0f, 0x00, 0x00,
+	// 1519 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x6e, 0xdb, 0xc6,
+	0x12, 0xd6, 0x8f, 0xf5, 0x37, 0xb2, 0x64, 0x7a, 0x13, 0x3b, 0x82, 0xe3, 0x73, 0x22, 0xf0, 0xe4,
+	0x1c, 0x38, 0xc1, 0x89, 0xd3, 0xd8, 0xfd, 0x49, 0x2e, 0x69, 0x89, 0x56, 0x58, 0xcb, 0x4b, 0x62,
+	0x29, 0x39, 0xc8, 0x15, 0x41, 0x4b, 0x6b, 0x9b, 0x00, 0x45, 0x2a, 0x24, 0x65, 0x23, 0x0f, 0xd0,
+	0x17, 0xe9, 0xcb, 0xf4, 0xb6, 0x4f, 0xd0, 0xbb, 0x3e, 0x40, 0x1f, 0xa0, 0x40, 0xb1, 0xcb, 0x25,
+	0x45, 0x5a, 0x4a, 0xe1, 0xf6, 0xa6, 0x37, 0xc2, 0xce, 0x37, 0xff, 0xb3, 0xc3, 0x99, 0x15, 0xec,
+	0xd8, 0x73, 0xe7, 0xf5, 0xe5, 0x65, 0xe8, 0xcc, 0xe2, 0xdf, 0xc3, 0x79, 0xe0, 0x47, 0x3e, 0xaa,
+	0x70, 0x62, 0xef, 0xe9, 0xad, 0xef, 0x46, 0x37, 0xb6, 0xc5, 0xc1, 0xf0, 0xb5, 0x3f, 0xa7, 0x9e,
+	0xef, 0x46, 0xb1, 0xcc, 0x5e, 0x37, 0xcf, 0x8c, 0xe8, 0xe4, 0x86, 0x9d, 0xaf, 0x1c, 0x97, 0xc6,
+	0x12, 0xf2, 0x77, 0x50, 0x33, 0x74, 0x6c, 0xf8, 0x41, 0x84, 0xda, 0x50, 0xd2, 0xfa, 0x9d, 0x62,
+	0xb7, 0x78, 0x50, 0x21, 0x25, 0xad, 0x8f, 0xf6, 0xa1, 0xa1, 0xcf, 0x69, 0x60, 0x46, 0x76, 0x44,
+	0x3b, 0xa5, 0x6e, 0xf1, 0xa0, 0x41, 0x96, 0x00, 0x53, 0xc4, 0x58, 0xfb, 0x1b, 0x8a, 0xbf, 0x16,
+	0xa1, 0xac, 0xbb, 0xab, 0x5a, 0x32, 0x6c, 0x9a, 0x34, 0x70, 0x6c, 0x17, 0x2f, 0x66, 0x97, 0x34,
+	0x10, 0x8a, 0x39, 0x2c, 0x6f, 0xb9, 0x7c, 0xcf, 0x32, 0x7a, 0x0e, 0x2d, 0xcd, 0x8b, 0x68, 0xe0,
+	0xd9, 0x6e, 0x2c, 0xb1, 0xc1, 0x25, 0xf2, 0x20, 0xf7, 0x6b, 0x74, 0x6a, 0x9c, 0x55, 0xd2, 0x0c,
+	0xf4, 0x12, 0xea, 0x22, 0x91, 0xb0, 0x53, 0xe9, 0x96, 0x0f, 0x9a, 0x47, 0xed, 0xc3, 0xb8, 0xce,
+	0x02, 0x26, 0x29, 0x9f, 0xc9, 0x8a, 0x6a, 0x85, 0x9d, 0x6a, 0x4e, 0x56, 0xc0, 0x24, 0xe5, 0xcb,
+	0xbf, 0xb3, 0x3c, 0xf1, 0xf8, 0x1f, 0xcb, 0x73, 0x1f, 0x1a, 0x86, 0xef, 0xb1, 0x58, 0xb4, 0x7e,
+	0xa7, 0xc2, 0xdd, 0x2f, 0x01, 0xc6, 0x7d, 0x7f, 0xa7, 0x4c, 0xa7, 0x01, 0x0d, 0xc3, 0x4e, 0x3d,
+	0xf6, 0x90, 0x02, 0x68, 0x17, 0xaa, 0x4c, 0x0e, 0xfb, 0x9d, 0x06, 0x57, 0x14, 0x14, 0xcb, 0x3f,
+	0xa4, 0xc1, 0xad, 0x33, 0xa1, 0x61, 0x07, 0x72, 0xf9, 0x9b, 0x31, 0x4c, 0x52, 0xbe, 0xfc, 0x5b,
+	0x09, 0x6a, 0x02, 0x45, 0x08, 0x36, 0xb0, 0x3d, 0xa3, 0xbc, 0x0a, 0x0d, 0xc2, 0xcf, 0xf9, 0x08,
+	0x4a, 0xf7, 0x23, 0x78, 0x0c, 0x15, 0xdd, 0x5b, 0x98, 0x9e, 0xc8, 0x3e, 0x26, 0x98, 0x1d, 0x73,
+	0x64, 0x5f, 0xf3, 0x84, 0x2b, 0x84, 0x9f, 0x19, 0xd6, 0x63, 0x58, 0x9c, 0x22, 0x3f, 0xa3, 0x7f,
+	0x03, 0x60, 0x4a, 0xa7, 0xa1, 0x6a, 0xcf, 0x7d, 0xb7, 0x53, 0xed, 0x16, 0x0f, 0xea, 0x24, 0x83,
+	0x30, 0xdf, 0x9c, 0xea, 0xdf, 0x4c, 0xe6, 0xbc, 0x15, 0xea, 0x64, 0x09, 0xa4, 0x5c, 0xed, 0x7a,
+	0x36, 0xe7, 0xb5, 0x49, 0xb8, 0x0c, 0x40, 0x1d, 0xa8, 0x0d, 0xe8, 0x8c, 0x15, 0x44, 0x14, 0x27,
+	0x21, 0x99, 0x57, 0x6e, 0x3e, 0xbe, 0x14, 0xe0, 0x81, 0x67, 0x10, 0x66, 0x97, 0xd9, 0x8f, 0xd9,
+	0xcd, 0x38, 0xe3, 0x14, 0x58, 0xbd, 0xd5, 0xcd, 0x2f, 0xdc, 0xaa, 0x36, 0x38, 0x37, 0x62, 0x89,
+	0x56, 0x6c, 0x23, 0x05, 0x64, 0x1b, 0x1e, 0xeb, 0x78, 0x3c, 0x0a, 0xec, 0xab, 0x2b, 0x67, 0x62,
+	0x4e, 0x6e, 0xe8, 0x74, 0xe1, 0xd2, 0x20, 0x44, 0x1a, 0x6c, 0x45, 0x0c, 0x5c, 0x42, 0xfc, 0x2a,
+	0x9a, 0x47, 0xcf, 0x0e, 0x73, 0x33, 0x61, 0x45, 0x93, 0xdc, 0xd7, 0x93, 0x0f, 0x60, 0x43, 0xc7,
+	0xe3, 0x10, 0x75, 0xa1, 0xe2, 0x44, 0x74, 0xc6, 0x0c, 0xb1, 0x3e, 0x00, 0xd1, 0x07, 0x3a, 0x1e,
+	0x93, 0x98, 0x21, 0x7f, 0x05, 0x75, 0x71, 0xff, 0x21, 0x7a, 0x9e, 0x97, 0xbe, 0xdf, 0x35, 0xa9,
+	0x06, 0x30, 0x7d, 0xfa, 0x69, 0x41, 0xc3, 0x68, 0xe5, 0x43, 0x29, 0xae, 0x7e, 0x28, 0xf2, 0x4b,
+	0x00, 0x43, 0xc7, 0x89, 0x46, 0xa6, 0xe5, 0xa7, 0x5c, 0xbc, 0xb5, 0x6c, 0xf9, 0xa9, 0xfc, 0x4b,
+	0x19, 0x1a, 0x8a, 0x6b, 0x07, 0xb3, 0xd1, 0xe7, 0x39, 0x95, 0x7f, 0x2e, 0x43, 0x85, 0x1d, 0x42,
+	0x54, 0x83, 0xf2, 0x50, 0x37, 0xa5, 0x02, 0x6a, 0x03, 0xf4, 0x3f, 0x6a, 0x78, 0x60, 0x0d, 0x14,
+	0xd3, 0x90, 0x8a, 0xa8, 0x05, 0x0d, 0x1d, 0x8f, 0x2d, 0x65, 0xa8, 0x90, 0x73, 0xa9, 0x84, 0x9e,
+	0xc0, 0x23, 0x46, 0x9a, 0x23, 0x85, 0x8c, 0xc6, 0x86, 0x75, 0xaa, 0x68, 0xc3, 0x31, 0x51, 0xa5,
+	0x32, 0xda, 0x05, 0xc4, 0x19, 0xda, 0x00, 0x2b, 0x43, 0xab, 0xaf, 0x0e, 0x88, 0xd2, 0x57, 0xa5,
+	0x8d, 0x44, 0xa1, 0x4f, 0xb4, 0xd3, 0x91, 0xa5, 0x9f, 0x5a, 0x1f, 0x34, 0xdc, 0xd7, 0x3f, 0x48,
+	0x15, 0xb4, 0x0f, 0x1d, 0xc6, 0x18, 0xea, 0xa6, 0xc9, 0x70, 0xfd, 0xbc, 0xa7, 0x59, 0xbd, 0xf7,
+	0x0a, 0xc6, 0xea, 0x50, 0xaa, 0xa6, 0x7e, 0xb8, 0x39, 0x33, 0xf5, 0x53, 0x43, 0x2f, 0xe0, 0xbf,
+	0x8c, 0x31, 0x22, 0x0a, 0x36, 0xcf, 0x35, 0xd3, 0xd4, 0x74, 0x6c, 0x69, 0x78, 0xa4, 0x92, 0x53,
+	0x95, 0xa8, 0xb8, 0xa7, 0x5a, 0x1f, 0x14, 0x82, 0x35, 0x3c, 0x90, 0xea, 0x68, 0x0f, 0x76, 0x79,
+	0xe8, 0xbd, 0x91, 0x76, 0xa1, 0x8c, 0x98, 0x60, 0x62, 0xa6, 0x81, 0x3a, 0xbc, 0x49, 0x2c, 0x83,
+	0xe8, 0x3d, 0xd5, 0x34, 0x59, 0xbe, 0x2a, 0x21, 0x3a, 0x91, 0x00, 0x75, 0x61, 0x3f, 0x1b, 0xd7,
+	0x99, 0xfa, 0xd1, 0x32, 0x3f, 0xe2, 0x5e, 0xaa, 0xdb, 0x44, 0x3b, 0xb0, 0xcd, 0x24, 0xb4, 0xd1,
+	0xd8, 0x32, 0x74, 0xcc, 0x6a, 0x31, 0x32, 0xa5, 0x4d, 0xb4, 0x0d, 0xad, 0xb4, 0x52, 0x4c, 0x5d,
+	0x6a, 0xdd, 0x87, 0x4e, 0xa4, 0x76, 0x92, 0x58, 0x02, 0x19, 0x3d, 0x8b, 0x65, 0x21, 0x6d, 0x25,
+	0xf5, 0xc8, 0x31, 0x7a, 0x22, 0x2a, 0x09, 0x21, 0x68, 0x67, 0xb9, 0xa7, 0x9a, 0xb4, 0x8d, 0x1e,
+	0xc1, 0x56, 0x16, 0x53, 0xce, 0x35, 0x09, 0xc9, 0x6f, 0xa1, 0xcd, 0xef, 0xd7, 0xb0, 0x03, 0x7b,
+	0x46, 0x23, 0x1a, 0x20, 0x09, 0xca, 0x67, 0xf4, 0xb3, 0xe8, 0x1c, 0x76, 0x64, 0x73, 0xe5, 0xc2,
+	0x76, 0x17, 0xc9, 0x5e, 0x8a, 0x09, 0xf9, 0xc7, 0x22, 0xb7, 0xc7, 0xb5, 0x33, 0xcd, 0x94, 0x76,
+	0x8b, 0xb0, 0xb0, 0x04, 0x1e, 0x34, 0xc5, 0x77, 0xa1, 0xca, 0x3e, 0xcb, 0x45, 0x28, 0x86, 0x98,
+	0xa0, 0xd0, 0x37, 0x00, 0x69, 0x88, 0x61, 0x67, 0x83, 0x7f, 0x11, 0x3b, 0xe2, 0x8b, 0xc8, 0x27,
+	0x40, 0x32, 0x82, 0xf2, 0x27, 0xd8, 0xd2, 0x87, 0xa3, 0x5c, 0x8c, 0x5d, 0x68, 0xf2, 0xf1, 0x70,
+	0x65, 0x4f, 0xa8, 0x58, 0x32, 0x2d, 0x92, 0x85, 0xd2, 0xa9, 0xc2, 0x48, 0x9e, 0x49, 0x29, 0x33,
+	0x55, 0x12, 0xf0, 0x4b, 0x91, 0xca, 0x3f, 0x14, 0xa1, 0x75, 0x41, 0x83, 0xd0, 0xf1, 0x3d, 0x91,
+	0x53, 0x07, 0x6a, 0xb7, 0x31, 0x20, 0x6a, 0x92, 0x90, 0xac, 0x5e, 0x97, 0x0b, 0xc7, 0x9d, 0x8e,
+	0x9c, 0x59, 0xba, 0xf5, 0x53, 0x80, 0xcd, 0xc6, 0x89, 0x3f, 0x9b, 0x39, 0xd1, 0x7b, 0x3b, 0xbc,
+	0x11, 0x5e, 0x32, 0x08, 0xd3, 0xbe, 0x76, 0x22, 0x11, 0x44, 0xbc, 0xcf, 0x96, 0x80, 0xfc, 0x16,
+	0xea, 0x43, 0xff, 0x7a, 0x48, 0x6f, 0xa9, 0xcb, 0x6e, 0xd0, 0x65, 0x07, 0xe1, 0x3f, 0x26, 0x58,
+	0x06, 0x13, 0xdb, 0x75, 0xc5, 0x4d, 0xd4, 0x89, 0xa0, 0x64, 0x15, 0xea, 0x84, 0x86, 0x73, 0xdf,
+	0x0b, 0x29, 0x7a, 0x06, 0xcd, 0x90, 0xdb, 0xb3, 0x26, 0xfe, 0x94, 0x8a, 0x95, 0x0c, 0x31, 0xd4,
+	0xf3, 0xa7, 0x94, 0x25, 0x37, 0xa3, 0x61, 0x68, 0x5f, 0x27, 0x09, 0x24, 0xa4, 0x1c, 0x42, 0x93,
+	0x0d, 0xff, 0xa4, 0xee, 0x2f, 0xa0, 0xaa, 0x7b, 0x0b, 0x42, 0x3f, 0x89, 0x31, 0xba, 0x9d, 0x99,
+	0x7e, 0xb1, 0x08, 0x11, 0x02, 0xe8, 0x1d, 0x6c, 0x9a, 0x8b, 0x4b, 0x65, 0x12, 0x39, 0xbe, 0x77,
+	0x61, 0xbb, 0xdc, 0x70, 0x3b, 0xbd, 0xee, 0x94, 0xc5, 0x47, 0x11, 0xc9, 0x89, 0xca, 0x67, 0x50,
+	0x39, 0x75, 0xfd, 0xbb, 0x10, 0xfd, 0x0b, 0xe0, 0xca, 0xf5, 0xef, 0xac, 0x89, 0xbf, 0xf0, 0xa2,
+	0x64, 0xb0, 0x31, 0xa4, 0xc7, 0x00, 0xf4, 0x1f, 0xa8, 0x30, 0x82, 0x6d, 0x51, 0xd6, 0x4a, 0xad,
+	0xc3, 0xe4, 0x11, 0xc8, 0xb4, 0x49, 0xcc, 0x93, 0x6b, 0x50, 0x51, 0x67, 0xf3, 0xe8, 0xf3, 0xcb,
+	0x37, 0xd0, 0xce, 0x7b, 0x45, 0x75, 0xd8, 0xf8, 0x5e, 0xd7, 0xb0, 0x54, 0x40, 0x0d, 0xa8, 0x0c,
+	0x55, 0xe5, 0x42, 0x95, 0x8a, 0x08, 0xa0, 0xca, 0xc0, 0x8b, 0x63, 0xa9, 0x74, 0xf4, 0x53, 0x03,
+	0x2a, 0x27, 0x27, 0xa6, 0x33, 0x43, 0xaf, 0xa1, 0x26, 0xfa, 0x01, 0x6d, 0x8a, 0x14, 0xb8, 0xd5,
+	0xbd, 0xc7, 0x82, 0xca, 0x75, 0x8b, 0x5c, 0x40, 0x6f, 0xa0, 0x69, 0xd2, 0x28, 0xbd, 0xbc, 0x2d,
+	0x21, 0x96, 0x00, 0x7b, 0xf7, 0x01, 0xb9, 0x80, 0x9e, 0x43, 0x75, 0x40, 0x23, 0xf6, 0x44, 0xcc,
+	0xbb, 0x48, 0x57, 0x8c, 0x1b, 0xc9, 0x05, 0xf4, 0x0a, 0xc0, 0xf0, 0xef, 0x68, 0xe0, 0x7b, 0xab,
+	0x92, 0x89, 0xd1, 0xe4, 0xe6, 0xe5, 0x02, 0x3a, 0x84, 0xa6, 0x79, 0xb3, 0x88, 0xa6, 0xfe, 0xdd,
+	0xc3, 0xe4, 0xff, 0x0f, 0x0d, 0x42, 0x2f, 0x7d, 0x3f, 0x7a, 0x90, 0xf4, 0x8b, 0x38, 0x64, 0x3c,
+	0x46, 0xab, 0x9d, 0xb0, 0x97, 0x59, 0x8d, 0x72, 0x01, 0xfd, 0x8f, 0x3d, 0x1f, 0x22, 0xbe, 0x42,
+	0xf3, 0x66, 0x9b, 0x4b, 0xb1, 0x30, 0x0e, 0x78, 0x40, 0xa3, 0x74, 0x81, 0xae, 0x0f, 0x21, 0x61,
+	0xcb, 0x05, 0xf4, 0x2d, 0xb4, 0x99, 0x5d, 0x6f, 0x91, 0xaa, 0xac, 0x09, 0x65, 0x8d, 0xde, 0x71,
+	0xa6, 0x30, 0xeb, 0xe3, 0x5f, 0x93, 0xef, 0x11, 0x6c, 0x25, 0x4a, 0x8a, 0xeb, 0xae, 0x49, 0x66,
+	0x8d, 0xce, 0x3b, 0xd8, 0xce, 0x38, 0x0a, 0x75, 0xcf, 0xd0, 0x71, 0xea, 0x6e, 0xb9, 0xc4, 0xd7,
+	0xbb, 0x4b, 0xef, 0xfa, 0xc1, 0x21, 0xbe, 0x81, 0xb6, 0xd0, 0x79, 0x70, 0x84, 0x6f, 0x41, 0x5a,
+	0xba, 0xf9, 0x4b, 0x01, 0x7e, 0x0d, 0x9b, 0x84, 0x86, 0x91, 0x1d, 0x44, 0xf1, 0xfb, 0xf2, 0x61,
+	0x21, 0x1e, 0x43, 0x53, 0x68, 0xf1, 0x67, 0xe7, 0xc3, 0x94, 0x4e, 0x60, 0xc7, 0xe4, 0xf7, 0xcc,
+	0x17, 0x81, 0xe6, 0x4d, 0x9d, 0x89, 0xcd, 0x3e, 0x65, 0xb4, 0xbb, 0x54, 0xcf, 0xee, 0x88, 0x3f,
+	0xb1, 0xe1, 0x46, 0x5f, 0xb4, 0x91, 0xdf, 0x33, 0xeb, 0x6c, 0xbc, 0x82, 0xfa, 0x80, 0x46, 0xf1,
+	0x7c, 0x5a, 0x13, 0x79, 0x52, 0x6c, 0x2e, 0xc0, 0x6b, 0xbb, 0xd5, 0xbb, 0xb1, 0xbd, 0x6b, 0xca,
+	0xc6, 0x68, 0xfc, 0x94, 0x45, 0x42, 0x24, 0x33, 0x58, 0xd7, 0x39, 0x3a, 0x83, 0x27, 0x71, 0x63,
+	0xaf, 0x3e, 0x6b, 0xd7, 0xf8, 0x7d, 0xba, 0x84, 0x56, 0xe4, 0xe5, 0xc2, 0x65, 0x95, 0xff, 0xeb,
+	0x3d, 0xfe, 0x23, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x86, 0x90, 0x8d, 0x54, 0x0f, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/api/bbsim/bbsim.proto b/api/bbsim/bbsim.proto
index 7a67c85..da329f7 100644
--- a/api/bbsim/bbsim.proto
+++ b/api/bbsim/bbsim.proto
@@ -63,6 +63,7 @@
     string EapolState = 10;
     string DhcpState = 11;
     string InternalState = 12;
+    string IGMPState = 13;
 }
 
 message ONUTrafficSchedulers {
diff --git a/api/legacy/bbsim.pb.go b/api/legacy/bbsim.pb.go
index ac41b01..3e94e0e 100644
--- a/api/legacy/bbsim.pb.go
+++ b/api/legacy/bbsim.pb.go
@@ -8,8 +8,8 @@
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
 	_ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options"
-	openolt "github.com/opencord/voltha-protos/v2/go/openolt"
-	tech_profile "github.com/opencord/voltha-protos/v2/go/tech_profile"
+	openolt "github.com/opencord/voltha-protos/v3/go/openolt"
+	tech_profile "github.com/opencord/voltha-protos/v3/go/tech_profile"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
diff --git a/configs/tt-services.yaml b/configs/tt-services.yaml
index aa6c661..78966b8 100644
--- a/configs/tt-services.yaml
+++ b/configs/tt-services.yaml
@@ -41,8 +41,9 @@
 - name: MC
   c_tag: 55
   c_tag_allocation: shared
-  s_tag: 555
+  s_tag: 550
   s_tag_allocation: shared
   tp_id: 66
   ds_pon_c_tag_priority: 5
-  ds_pon_s_tag_priority: 5
\ No newline at end of file
+  ds_pon_s_tag_priority: 5
+# TODO add mgmt service (same tagging scheme as void/vod), requires DHCP
\ No newline at end of file
diff --git a/go.mod b/go.mod
index 602e81d..fa8fe8b 100644
--- a/go.mod
+++ b/go.mod
@@ -19,7 +19,7 @@
 	github.com/olekukonko/tablewriter v0.0.4
 	github.com/opencord/cordctl v0.0.0-20190909161711-01e9c1f04bf4
 	github.com/opencord/omci-sim v0.0.4
-	github.com/opencord/voltha-protos/v2 v2.1.2
+	github.com/opencord/voltha-protos/v3 v3.4.5
 	github.com/pkg/errors v0.8.1 // indirect
 	github.com/sirupsen/logrus v1.4.2
 	github.com/stretchr/testify v1.4.0
diff --git a/go.sum b/go.sum
index 2c8784d..2d39ec3 100644
--- a/go.sum
+++ b/go.sum
@@ -82,8 +82,8 @@
 github.com/opencord/cordctl v0.0.0-20190909161711-01e9c1f04bf4/go.mod h1:/+3S0pwQUy7HeKnH0KfKp5W6hmh/LdZzuZTNT/m7vA4=
 github.com/opencord/omci-sim v0.0.4 h1:kN8zi/8gkcHOkXPk27Wp6Wwp8ggUylXcD/egW7PUXmc=
 github.com/opencord/omci-sim v0.0.4/go.mod h1:ToOkj7hkHgoet9XQDadKMhYqgA7qItZsi2j1Pk/mX6Y=
-github.com/opencord/voltha-protos/v2 v2.1.2 h1:/eX+kXhANbzxTpBHgC6vjwBUGRKKvGUOQRDdDgROp9E=
-github.com/opencord/voltha-protos/v2 v2.1.2/go.mod h1:6kOcfYi1CadWowFxI2SH5wLfHrsRECZLZlD2MFK6WDI=
+github.com/opencord/voltha-protos/v3 v3.4.5 h1:8M4RHUgQI+XHMBtTW6FLwinqP9JbZq3kM2UOb9ShgLc=
+github.com/opencord/voltha-protos/v3 v3.4.5/go.mod h1:nl1ETp5Iw3avxOaKD8BJlYY5wYI4KeV95aT1pL63nto=
 github.com/pierrec/lz4 v2.4.1+incompatible h1:mFe7ttWaflA46Mhqh+jUfjp2qTbPYxLB2/OyBppH9dg=
 github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
 github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
diff --git a/internal/bbr/devices/olt.go b/internal/bbr/devices/olt.go
index 35b5697..94e2908 100644
--- a/internal/bbr/devices/olt.go
+++ b/internal/bbr/devices/olt.go
@@ -29,7 +29,7 @@
 	"github.com/opencord/bbsim/internal/bbsim/devices"
 	"github.com/opencord/bbsim/internal/bbsim/packetHandlers"
 	"github.com/opencord/bbsim/internal/common"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	log "github.com/sirupsen/logrus"
 	"google.golang.org/grpc"
 )
@@ -288,7 +288,7 @@
 
 	pkt := gopacket.NewPacket(pktIndication.Pkt, layers.LayerTypeEthernet, gopacket.Default)
 
-	pktType, err := packetHandlers.IsEapolOrDhcp(pkt)
+	pktType, err := packetHandlers.GetPktType(pkt)
 
 	if err != nil {
 		log.Warnf("Ignoring packet as it's neither EAPOL or DHCP")
diff --git a/internal/bbsim/alarmsim/alarmsim.go b/internal/bbsim/alarmsim/alarmsim.go
index d7c0b54..838e15a 100644
--- a/internal/bbsim/alarmsim/alarmsim.go
+++ b/internal/bbsim/alarmsim/alarmsim.go
@@ -25,7 +25,7 @@
 
 	"github.com/opencord/bbsim/api/bbsim"
 	"github.com/opencord/bbsim/internal/bbsim/devices"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
 )
@@ -160,9 +160,14 @@
 	case bbsim.AlarmType_ONU_ITU_PON_STATS:
 		alarm = &openolt.AlarmIndication{
 			Data: &openolt.AlarmIndication_OnuItuPonStatsInd{OnuItuPonStatsInd: &openolt.OnuItuPonStatsIndication{
-				OnuId:     onu.ID,
-				IntfId:    onu.PonPortID,
-				RdiErrors: uint32(extractInt(req.Parameters, "RdiErrors", 0)),
+				OnuId:  onu.ID,
+				IntfId: onu.PonPortID,
+				Stats: &openolt.OnuItuPonStatsIndication_RdiErrorInd{
+					RdiErrorInd: &openolt.RdiErrorIndication{
+						RdiErrorCount: uint64(extractInt(req.Parameters, "RdiErrors", 0)),
+						Status:        req.Status,
+					},
+				},
 			}},
 		}
 	case bbsim.AlarmType_ONU_ALARM_LOS:
diff --git a/internal/bbsim/api/onus_handler.go b/internal/bbsim/api/onus_handler.go
index 332f237..10d671d 100644
--- a/internal/bbsim/api/onus_handler.go
+++ b/internal/bbsim/api/onus_handler.go
@@ -224,6 +224,9 @@
 }
 
 func (s BBSimServer) ChangeIgmpState(ctx context.Context, req *bbsim.IgmpRequest) (*bbsim.Response, error) {
+
+	// TODO check that the ONU is enabled and the services are initialized before changing the state
+
 	res := &bbsim.Response{}
 
 	logger.WithFields(log.Fields{
@@ -250,15 +253,42 @@
 			event = "igmp_join_startv3"
 		}
 
-		if igmpErr := onu.InternalState.Event(event); igmpErr != nil {
-			logger.WithFields(log.Fields{
-				"OnuId":  onu.ID,
-				"IntfId": onu.PonPortID,
-				"OnuSn":  onu.Sn(),
-			}).Errorf("IGMP request failed: %s", igmpErr.Error())
+		errors := []string{}
+		startedOn := []string{}
+		success := true
+
+		for _, s := range onu.Services {
+			service := s.(*devices.Service)
+			if service.NeedsIgmp {
+
+				logger.WithFields(log.Fields{
+					"OnuId":   onu.ID,
+					"IntfId":  onu.PonPortID,
+					"OnuSn":   onu.Sn(),
+					"Service": service.Name,
+				}).Debugf("Sending %s event on Service %s", event, service.Name)
+
+				if err := service.IGMPState.Event(event); err != nil {
+					logger.WithFields(log.Fields{
+						"OnuId":   onu.ID,
+						"IntfId":  onu.PonPortID,
+						"OnuSn":   onu.Sn(),
+						"Service": service.Name,
+					}).Errorf("IGMP request failed: %s", err.Error())
+					errors = append(errors, fmt.Sprintf("%s: %s", service.Name, err.Error()))
+					success = false
+				}
+				startedOn = append(startedOn, service.Name)
+			}
+		}
+
+		if success {
+			res.StatusCode = int32(codes.OK)
+			res.Message = fmt.Sprintf("Authentication restarted on Services %s for ONU %s.",
+				fmt.Sprintf("%v", startedOn), onu.Sn())
+		} else {
 			res.StatusCode = int32(codes.FailedPrecondition)
-			res.Message = igmpErr.Error()
-			return res, igmpErr
+			res.Message = fmt.Sprintf("%v", errors)
 		}
 	}
 
@@ -283,6 +313,7 @@
 	}
 
 	errors := []string{}
+	startedOn := []string{}
 	success := true
 
 	for _, s := range onu.Services {
@@ -298,12 +329,14 @@
 				errors = append(errors, fmt.Sprintf("%s: %s", service.Name, err.Error()))
 				success = false
 			}
+			startedOn = append(startedOn, service.Name)
 		}
 	}
 
 	if success {
 		res.StatusCode = int32(codes.OK)
-		res.Message = fmt.Sprintf("Authentication restarted for ONU %s.", onu.Sn())
+		res.Message = fmt.Sprintf("Authentication restarted on Services %s for ONU %s.",
+			fmt.Sprintf("%v", startedOn), onu.Sn())
 	} else {
 		res.StatusCode = int32(codes.FailedPrecondition)
 		res.Message = fmt.Sprintf("%v", errors)
@@ -330,6 +363,7 @@
 	}
 
 	errors := []string{}
+	startedOn := []string{}
 	success := true
 
 	for _, s := range onu.Services {
@@ -346,12 +380,14 @@
 				errors = append(errors, fmt.Sprintf("%s: %s", service.Name, err.Error()))
 				success = false
 			}
+			startedOn = append(startedOn, service.Name)
 		}
 	}
 
 	if success {
 		res.StatusCode = int32(codes.OK)
-		res.Message = fmt.Sprintf("DHCP restarted for ONU %s.", onu.Sn())
+		res.Message = fmt.Sprintf("DHCP restarted on Services %s for ONU %s.",
+			fmt.Sprintf("%v", startedOn), onu.Sn())
 	} else {
 		res.StatusCode = int32(codes.FailedPrecondition)
 		res.Message = fmt.Sprintf("%v", errors)
diff --git a/internal/bbsim/api/services_handler.go b/internal/bbsim/api/services_handler.go
index 18bb84c..85ee8f6 100644
--- a/internal/bbsim/api/services_handler.go
+++ b/internal/bbsim/api/services_handler.go
@@ -36,6 +36,7 @@
 		GemPort:       int32(s.GemPort),
 		EapolState:    s.EapolState.Current(),
 		DhcpState:     s.DHCPState.Current(),
+		IGMPState:     s.IGMPState.Current(),
 	}
 }
 
diff --git a/internal/bbsim/devices/helpers.go b/internal/bbsim/devices/helpers.go
index e72093b..6b3d220 100644
--- a/internal/bbsim/devices/helpers.go
+++ b/internal/bbsim/devices/helpers.go
@@ -23,7 +23,7 @@
 
 	"github.com/looplab/fsm"
 	"github.com/opencord/bbsim/internal/common"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 )
 
 type mode int
diff --git a/internal/bbsim/devices/messageTypes.go b/internal/bbsim/devices/messageTypes.go
index cfe7200..b677416 100644
--- a/internal/bbsim/devices/messageTypes.go
+++ b/internal/bbsim/devices/messageTypes.go
@@ -19,7 +19,7 @@
 import (
 	"github.com/google/gopacket"
 	"github.com/opencord/bbsim/internal/bbsim/packetHandlers"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	"net"
 )
 
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index a9420de..c883e95 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -20,6 +20,7 @@
 	"context"
 	"encoding/hex"
 	"fmt"
+	"github.com/opencord/voltha-protos/v3/go/ext/config"
 	"net"
 	"sync"
 	"time"
@@ -32,8 +33,9 @@
 	bbsim "github.com/opencord/bbsim/internal/bbsim/types"
 	"github.com/opencord/bbsim/internal/common"
 	omcisim "github.com/opencord/omci-sim"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
-	"github.com/opencord/voltha-protos/v2/go/tech_profile"
+	common_protos "github.com/opencord/voltha-protos/v3/go/common"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/tech_profile"
 	log "github.com/sirupsen/logrus"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
@@ -1074,7 +1076,21 @@
 		}).Debug("Adding OLT flow")
 	} else if flow.FlowType == "multicast" {
 		oltLogger.WithFields(log.Fields{
-			"FlowId": flow.FlowId,
+			"Cookie":           flow.Cookie,
+			"DstPort":          flow.Classifier.DstPort,
+			"EthType":          fmt.Sprintf("%x", flow.Classifier.EthType),
+			"FlowId":           flow.FlowId,
+			"FlowType":         flow.FlowType,
+			"GemportId":        flow.GemportId,
+			"InnerVlan":        flow.Classifier.IVid,
+			"IntfId":           flow.AccessIntfId,
+			"IpProto":          flow.Classifier.IpProto,
+			"OnuId":            flow.OnuId,
+			"OuterVlan":        flow.Classifier.OVid,
+			"PortNo":           flow.PortNo,
+			"SrcPort":          flow.Classifier.SrcPort,
+			"UniID":            flow.UniId,
+			"ClassifierOPbits": flow.Classifier.OPbits,
 		}).Debug("Adding OLT multicast flow")
 	} else {
 		pon, err := o.GetPonById(uint32(flow.AccessIntfId))
@@ -1301,13 +1317,14 @@
 	}).Trace("Received OnuPacketOut")
 
 	rawpkt := gopacket.NewPacket(onuPkt.Pkt, layers.LayerTypeEthernet, gopacket.Default)
-	pktType, err := packetHandlers.IsEapolOrDhcp(rawpkt)
+
+	pktType, err := packetHandlers.GetPktType(rawpkt)
 	if err != nil {
 		onuLogger.WithFields(log.Fields{
 			"IntfId": onu.PonPortID,
 			"OnuId":  onu.ID,
 			"OnuSn":  onu.Sn(),
-			"Pkt":    rawpkt.Data(),
+			"Pkt":    hex.EncodeToString(rawpkt.Data()),
 		}).Error("Can't find pktType in packet, droppint it")
 		return new(openolt.Empty), nil
 	}
@@ -1473,3 +1490,39 @@
 	o.channel <- msg
 	return nil
 }
+
+func (o *OltDevice) PerformGroupOperation(ctx context.Context, group *openolt.Group) (*openolt.Empty, error) {
+	oltLogger.WithFields(log.Fields{
+		"GroupId": group.GroupId,
+		"Command": group.Command,
+		"Members": group.Members,
+		"Action":  group.Action,
+	}).Debug("received PerformGroupOperation")
+	return &openolt.Empty{}, nil
+}
+
+func (o *OltDevice) DeleteGroup(ctx context.Context, group *openolt.Group) (*openolt.Empty, error) {
+	oltLogger.WithFields(log.Fields{
+		"GroupId": group.GroupId,
+		"Command": group.Command,
+		"Members": group.Members,
+		"Action":  group.Action,
+	}).Debug("received PerformGroupOperation")
+	return &openolt.Empty{}, nil
+}
+
+func (o *OltDevice) GetExtValue(ctx context.Context, in *openolt.ValueParam) (*common_protos.ReturnValues, error) {
+	return &common_protos.ReturnValues{}, nil
+}
+
+func (o *OltDevice) OnuItuPonAlarmSet(ctx context.Context, in *config.OnuItuPonAlarm) (*openolt.Empty, error) {
+	return &openolt.Empty{}, nil
+}
+
+func (o *OltDevice) GetLogicalOnuDistanceZero(ctx context.Context, in *openolt.Onu) (*openolt.OnuLogicalDistance, error) {
+	return &openolt.OnuLogicalDistance{}, nil
+}
+
+func (o *OltDevice) GetLogicalOnuDistance(ctx context.Context, in *openolt.Onu) (*openolt.OnuLogicalDistance, error) {
+	return &openolt.OnuLogicalDistance{}, nil
+}
diff --git a/internal/bbsim/devices/olt_test.go b/internal/bbsim/devices/olt_test.go
index 53f9f44..1536baf 100644
--- a/internal/bbsim/devices/olt_test.go
+++ b/internal/bbsim/devices/olt_test.go
@@ -21,7 +21,7 @@
 	"net"
 	"testing"
 
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	"gotest.tools/assert"
 )
 
diff --git a/internal/bbsim/devices/onu.go b/internal/bbsim/devices/onu.go
index 80308da..5300b38 100644
--- a/internal/bbsim/devices/onu.go
+++ b/internal/bbsim/devices/onu.go
@@ -18,6 +18,7 @@
 
 import (
 	"context"
+	"encoding/hex"
 	"fmt"
 	"github.com/opencord/bbsim/internal/bbsim/packetHandlers"
 	"github.com/opencord/bbsim/internal/bbsim/responders/dhcp"
@@ -33,8 +34,8 @@
 	"github.com/opencord/bbsim/internal/common"
 	omcilib "github.com/opencord/bbsim/internal/common/omci"
 	omcisim "github.com/opencord/omci-sim"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
-	"github.com/opencord/voltha-protos/v2/go/tech_profile"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/tech_profile"
 	log "github.com/sirupsen/logrus"
 )
 
@@ -235,23 +236,6 @@
 				}
 				o.Channel <- msg
 			},
-			"igmp_join_start": func(e *fsm.Event) {
-				msg := Message{
-					Type: IGMPMembershipReportV2,
-				}
-				o.Channel <- msg
-			},
-			"igmp_leave": func(e *fsm.Event) {
-				msg := Message{
-					Type: IGMPLeaveGroup}
-				o.Channel <- msg
-			},
-			"igmp_join_startv3": func(e *fsm.Event) {
-				msg := Message{
-					Type: IGMPMembershipReportV3,
-				}
-				o.Channel <- msg
-			},
 		},
 	)
 
@@ -325,27 +309,32 @@
 					"pktType": msg.Type,
 				}).Trace("Received OnuPacketOut Message")
 
-				service, err := o.findServiceByMacAddress(msg.MacAddress)
-				if err != nil {
-					onuLogger.WithFields(log.Fields{
-						"IntfId":     msg.IntfId,
-						"OnuId":      msg.OnuId,
-						"pktType":    msg.Type,
-						"MacAddress": msg.MacAddress,
-						"OnuSn":      o.Sn(),
-					}).Error("Cannot find Service associated with packet")
-					return
+				if msg.Type == packetHandlers.EAPOL || msg.Type == packetHandlers.DHCP {
+
+					service, err := o.findServiceByMacAddress(msg.MacAddress)
+					if err != nil {
+						onuLogger.WithFields(log.Fields{
+							"IntfId":     msg.IntfId,
+							"OnuId":      msg.OnuId,
+							"pktType":    msg.Type,
+							"MacAddress": msg.MacAddress,
+							"Pkt":        hex.EncodeToString(msg.Packet.Data()),
+							"OnuSn":      o.Sn(),
+						}).Error("Cannot find Service associated with packet")
+						return
+					}
+					service.PacketCh <- msg
+				} else if msg.Type == packetHandlers.IGMP {
+					// if it's an IGMP packet we assume we have a single IGMP service
+					for _, s := range o.Services {
+						service := s.(*Service)
+
+						if service.NeedsIgmp {
+							service.PacketCh <- msg
+						}
+					}
 				}
 
-				service.PacketCh <- msg
-
-				onuLogger.WithFields(log.Fields{
-					"IntfId":      msg.IntfId,
-					"OnuId":       msg.OnuId,
-					"pktType":     msg.Type,
-					"ServiceName": service.Name,
-				}).Info("OnuPacketOut Sent on Service Packet channel")
-
 			case OnuPacketIn:
 				// NOTE we only receive BBR packets here.
 				// Eapol.HandleNextPacket can handle both BBSim and BBr cases so the call is the same
diff --git a/internal/bbsim/devices/onu_flow_test.go b/internal/bbsim/devices/onu_flow_test.go
index 3f0d702..0b8037a 100644
--- a/internal/bbsim/devices/onu_flow_test.go
+++ b/internal/bbsim/devices/onu_flow_test.go
@@ -19,7 +19,7 @@
 import (
 	"github.com/google/gopacket/layers"
 	"github.com/looplab/fsm"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	"gotest.tools/assert"
 	"testing"
 )
diff --git a/internal/bbsim/devices/onu_indications_test.go b/internal/bbsim/devices/onu_indications_test.go
index 76c7a7d..1905c20 100644
--- a/internal/bbsim/devices/onu_indications_test.go
+++ b/internal/bbsim/devices/onu_indications_test.go
@@ -22,7 +22,7 @@
 	"testing"
 	"time"
 
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	"google.golang.org/grpc"
 	"gotest.tools/assert"
 )
diff --git a/internal/bbsim/devices/onu_test_helpers.go b/internal/bbsim/devices/onu_test_helpers.go
index 76f7917..d98dc3f 100644
--- a/internal/bbsim/devices/onu_test_helpers.go
+++ b/internal/bbsim/devices/onu_test_helpers.go
@@ -19,10 +19,12 @@
 import (
 	"context"
 	"errors"
+	"github.com/opencord/voltha-protos/v3/go/common"
+	"github.com/opencord/voltha-protos/v3/go/ext/config"
 	"time"
 
-	"github.com/opencord/voltha-protos/v2/go/openolt"
-	"github.com/opencord/voltha-protos/v2/go/tech_profile"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/tech_profile"
 	"google.golang.org/grpc"
 )
 
@@ -104,6 +106,24 @@
 func (s *mockClient) EnableIndication(ctx context.Context, in *openolt.Empty, opts ...grpc.CallOption) (openolt.Openolt_EnableIndicationClient, error) {
 	return nil, errors.New("unimplemented-in-mock-client")
 }
+func (s *mockClient) PerformGroupOperation(ctx context.Context, group *openolt.Group, opts ...grpc.CallOption) (*openolt.Empty, error) {
+	return nil, errors.New("unimplemented-in-mock-client")
+}
+func (s *mockClient) DeleteGroup(ctx context.Context, group *openolt.Group, opts ...grpc.CallOption) (*openolt.Empty, error) {
+	return nil, errors.New("unimplemented-in-mock-client")
+}
+func (s *mockClient) GetExtValue(ctx context.Context, in *openolt.ValueParam, opts ...grpc.CallOption) (*common.ReturnValues, error) {
+	return nil, errors.New("unimplemented-in-mock-client")
+}
+func (s *mockClient) OnuItuPonAlarmSet(ctx context.Context, in *config.OnuItuPonAlarm, opts ...grpc.CallOption) (*openolt.Empty, error) {
+	return nil, errors.New("unimplemented-in-mock-client")
+}
+func (s *mockClient) GetLogicalOnuDistanceZero(ctx context.Context, in *openolt.Onu, opts ...grpc.CallOption) (*openolt.OnuLogicalDistance, error) {
+	return nil, errors.New("unimplemented-in-mock-client")
+}
+func (s *mockClient) GetLogicalOnuDistance(ctx context.Context, in *openolt.Onu, opts ...grpc.CallOption) (*openolt.OnuLogicalDistance, error) {
+	return nil, errors.New("unimplemented-in-mock-client")
+}
 
 // this method creates a fake ONU used in the tests
 func createMockOnu(id uint32, ponPortId uint32) *Onu {
diff --git a/internal/bbsim/devices/pon.go b/internal/bbsim/devices/pon.go
index a48dfb6..f9f9290 100644
--- a/internal/bbsim/devices/pon.go
+++ b/internal/bbsim/devices/pon.go
@@ -21,7 +21,7 @@
 	"fmt"
 
 	"github.com/looplab/fsm"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	log "github.com/sirupsen/logrus"
 )
 
diff --git a/internal/bbsim/devices/service_test.go b/internal/bbsim/devices/service_test.go
index 2191178..c585906 100644
--- a/internal/bbsim/devices/service_test.go
+++ b/internal/bbsim/devices/service_test.go
@@ -18,7 +18,7 @@
 
 import (
 	"github.com/opencord/bbsim/internal/bbsim/types"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	"github.com/stretchr/testify/assert"
 	"net"
 	"testing"
diff --git a/internal/bbsim/devices/services.go b/internal/bbsim/devices/services.go
index c8e9461..1d45ef7 100644
--- a/internal/bbsim/devices/services.go
+++ b/internal/bbsim/devices/services.go
@@ -17,10 +17,12 @@
 package devices
 
 import (
+	"encoding/hex"
 	"github.com/looplab/fsm"
 	"github.com/opencord/bbsim/internal/bbsim/packetHandlers"
 	"github.com/opencord/bbsim/internal/bbsim/responders/dhcp"
 	"github.com/opencord/bbsim/internal/bbsim/responders/eapol"
+	"github.com/opencord/bbsim/internal/bbsim/responders/igmp"
 	bbsimTypes "github.com/opencord/bbsim/internal/bbsim/types"
 	log "github.com/sirupsen/logrus"
 	"net"
@@ -61,6 +63,7 @@
 	InternalState *fsm.FSM
 	EapolState    *fsm.FSM
 	DHCPState     *fsm.FSM
+	IGMPState     *fsm.FSM
 	Channel       chan Message          // drive Service lifecycle
 	PacketCh      chan OnuPacketMessage // handle packets
 	Stream        bbsimTypes.Stream     // the gRPC stream to communicate with the adapter, created in the initialize transition
@@ -175,6 +178,35 @@
 		},
 	)
 
+	service.IGMPState = fsm.NewFSM(
+		"created",
+		fsm.Events{
+			{Name: "igmp_join_start", Src: []string{"created", "igmp_left", "igmp_join_error", "igmp_join_started"}, Dst: "igmp_join_started"},
+			{Name: "igmp_join_startv3", Src: []string{"igmp_left", "igmp_join_error", "igmp_join_started"}, Dst: "igmp_join_started"},
+			{Name: "igmp_join_error", Src: []string{"igmp_join_started"}, Dst: "igmp_join_error"},
+			{Name: "igmp_leave", Src: []string{"igmp_join_started"}, Dst: "igmp_left"},
+		},
+		fsm.Callbacks{
+			"igmp_join_start": func(e *fsm.Event) {
+				msg := Message{
+					Type: IGMPMembershipReportV2,
+				}
+				service.Channel <- msg
+			},
+			"igmp_leave": func(e *fsm.Event) {
+				msg := Message{
+					Type: IGMPLeaveGroup}
+				service.Channel <- msg
+			},
+			"igmp_join_startv3": func(e *fsm.Event) {
+				msg := Message{
+					Type: IGMPMembershipReportV3,
+				}
+				service.Channel <- msg
+			},
+		},
+	)
+
 	return &service, nil
 }
 
@@ -272,6 +304,9 @@
 			eapol.HandleNextPacket(msg.OnuId, msg.IntfId, s.GemPort, s.Onu.Sn(), s.Onu.PortNo, s.EapolState, msg.Packet, s.Stream, nil)
 		} else if msg.Type == packetHandlers.DHCP {
 			_ = dhcp.HandleNextPacket(s.Onu.PonPort.Olt.ID, s.Onu.ID, s.Onu.PonPortID, s.Name, s.Onu.Sn(), s.Onu.PortNo, s.CTag, s.GemPort, s.HwAddress, s.DHCPState, msg.Packet, s.UsPonCTagPriority, s.Stream)
+		} else if msg.Type == packetHandlers.IGMP {
+			log.Warn(hex.EncodeToString(msg.Packet.Data()))
+			_ = igmp.HandleNextPacket(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, msg.Packet, s.CTag, s.UsPonCTagPriority, s.Stream)
 		}
 	}
 }
@@ -295,7 +330,8 @@
 		}).Debug("Done Listening on Service Channel")
 	}()
 	for msg := range s.Channel {
-		if msg.Type == StartEAPOL {
+		switch msg.Type {
+		case StartEAPOL:
 			if err := s.handleEapolStart(s.Stream); err != nil {
 				serviceLogger.WithFields(log.Fields{
 					"OnuId":  s.Onu.ID,
@@ -306,7 +342,7 @@
 				}).Error("Error while sending EapolStart packet")
 				_ = s.EapolState.Event("auth_failed")
 			}
-		} else if msg.Type == StartDHCP {
+		case StartDHCP:
 			if err := s.handleDHCPStart(s.Stream); err != nil {
 				serviceLogger.WithFields(log.Fields{
 					"OnuId":  s.Onu.ID,
@@ -316,7 +352,33 @@
 					"err":    err,
 				}).Error("Error while sending DHCPDiscovery packet")
 				_ = s.DHCPState.Event("dhcp_failed")
+
 			}
+		case IGMPMembershipReportV2:
+			serviceLogger.WithFields(log.Fields{
+				"OnuId":  s.Onu.ID,
+				"IntfId": s.Onu.PonPortID,
+				"OnuSn":  s.Onu.Sn(),
+				"Name":   s.Name,
+			}).Debug("Recieved IGMPMembershipReportV2 message on ONU channel")
+			_ = igmp.SendIGMPMembershipReportV2(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, s.CTag, s.UsPonCTagPriority, s.Stream)
+		case IGMPLeaveGroup:
+			serviceLogger.WithFields(log.Fields{
+				"OnuId":  s.Onu.ID,
+				"IntfId": s.Onu.PonPortID,
+				"OnuSn":  s.Onu.Sn(),
+				"Name":   s.Name,
+			}).Debug("Recieved IGMPLeaveGroupV2 message on ONU channel")
+			_ = igmp.SendIGMPLeaveGroupV2(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, s.CTag, s.UsPonCTagPriority, s.Stream)
+		case IGMPMembershipReportV3:
+			serviceLogger.WithFields(log.Fields{
+				"OnuId":  s.Onu.ID,
+				"IntfId": s.Onu.PonPortID,
+				"OnuSn":  s.Onu.Sn(),
+				"Name":   s.Name,
+			}).Debug("Recieved IGMPMembershipReportV3 message on ONU channel")
+			_ = igmp.SendIGMPMembershipReportV3(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, s.CTag, s.UsPonCTagPriority, s.Stream)
+
 		}
 	}
 }
diff --git a/internal/bbsim/packetHandlers/filters.go b/internal/bbsim/packetHandlers/filters.go
index 9ada88c..c46f87d 100644
--- a/internal/bbsim/packetHandlers/filters.go
+++ b/internal/bbsim/packetHandlers/filters.go
@@ -30,6 +30,13 @@
 	return false
 }
 
+func IsIgmpPacket(pkt gopacket.Packet) bool {
+	if igmpLayer := pkt.Layer(layers.LayerTypeIGMP); igmpLayer != nil {
+		return true
+	}
+	return false
+}
+
 func IsLldpPacket(pkt gopacket.Packet) bool {
 	if layer := pkt.Layer(layers.LayerTypeLinkLayerDiscovery); layer != nil {
 		return true
@@ -78,11 +85,13 @@
 }
 
 // returns wether it's an EAPOL or DHCP packet, error if it's none
-func IsEapolOrDhcp(pkt gopacket.Packet) (PacketType, error) {
+func GetPktType(pkt gopacket.Packet) (PacketType, error) {
 	if pkt.Layer(layers.LayerTypeEAP) != nil || pkt.Layer(layers.LayerTypeEAPOL) != nil {
 		return EAPOL, nil
 	} else if IsDhcpPacket(pkt) {
 		return DHCP, nil
+	} else if IsIgmpPacket(pkt) {
+		return IGMP, nil
 	}
-	return UNKNOWN, errors.New("packet-is-neither-eapol-or-dhcp")
+	return UNKNOWN, errors.New("unknown-packet-type")
 }
diff --git a/internal/bbsim/packetHandlers/filters_test.go b/internal/bbsim/packetHandlers/filters_test.go
index 8d5f96a..c182e82 100644
--- a/internal/bbsim/packetHandlers/filters_test.go
+++ b/internal/bbsim/packetHandlers/filters_test.go
@@ -20,6 +20,7 @@
 	"github.com/google/gopacket"
 	"github.com/google/gopacket/layers"
 	"github.com/opencord/bbsim/internal/bbsim/packetHandlers"
+	"github.com/opencord/bbsim/internal/bbsim/responders/igmp"
 	"gotest.tools/assert"
 	"net"
 	"testing"
@@ -62,6 +63,29 @@
 	assert.Equal(t, res, false)
 }
 
+func Test_IsIgmpPacket(t *testing.T) {
+	igmp := &igmp.IGMP{
+		Type:         layers.IGMPMembershipReportV2, //IGMPV2 Membership Report
+		Checksum:     0,
+		GroupAddress: net.IPv4(224, 0, 0, 22),
+		Version:      2,
+	}
+	buffer := gopacket.NewSerializeBuffer()
+	options := gopacket.SerializeOptions{
+		ComputeChecksums: true,
+		FixLengths:       true,
+	}
+
+	if err := gopacket.SerializeLayers(buffer, options, igmp); err != nil {
+		t.Fatal(err)
+	}
+
+	pkt := gopacket.NewPacket(buffer.Bytes(), layers.LayerTypeIGMP, gopacket.DecodeOptions{})
+
+	res := packetHandlers.IsIgmpPacket(pkt)
+	assert.Equal(t, res, true)
+}
+
 func Test_IsLldpPacket_True(t *testing.T) {
 	layer := &layers.LinkLayerDiscovery{
 		PortID: layers.LLDPPortID{
diff --git a/internal/bbsim/packetHandlers/packetTypes.go b/internal/bbsim/packetHandlers/packetTypes.go
index fe424f0..c89443b 100644
--- a/internal/bbsim/packetHandlers/packetTypes.go
+++ b/internal/bbsim/packetHandlers/packetTypes.go
@@ -22,6 +22,7 @@
 	UNKNOWN PacketType = iota
 	EAPOL
 	DHCP
+	IGMP
 )
 
 func (t PacketType) String() string {
@@ -29,6 +30,7 @@
 		"UNKNOWN",
 		"EAPOL",
 		"DHCP",
+		"IGMP",
 	}
 	return names[t]
 }
diff --git a/internal/bbsim/responders/dhcp/dhcp.go b/internal/bbsim/responders/dhcp/dhcp.go
index 5fc8a64..9b48c05 100644
--- a/internal/bbsim/responders/dhcp/dhcp.go
+++ b/internal/bbsim/responders/dhcp/dhcp.go
@@ -30,7 +30,7 @@
 	"github.com/looplab/fsm"
 	"github.com/opencord/bbsim/internal/bbsim/packetHandlers"
 	bbsim "github.com/opencord/bbsim/internal/bbsim/types"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	log "github.com/sirupsen/logrus"
 )
 
diff --git a/internal/bbsim/responders/dhcp/dhcp_test.go b/internal/bbsim/responders/dhcp/dhcp_test.go
index cb6d9b7..2a49836 100644
--- a/internal/bbsim/responders/dhcp/dhcp_test.go
+++ b/internal/bbsim/responders/dhcp/dhcp_test.go
@@ -22,7 +22,7 @@
 	"testing"
 
 	"github.com/looplab/fsm"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	"google.golang.org/grpc"
 	"gotest.tools/assert"
 )
diff --git a/internal/bbsim/responders/eapol/eapol.go b/internal/bbsim/responders/eapol/eapol.go
index 8a37f02..f9488fb 100644
--- a/internal/bbsim/responders/eapol/eapol.go
+++ b/internal/bbsim/responders/eapol/eapol.go
@@ -27,7 +27,7 @@
 	"github.com/looplab/fsm"
 	bbsim "github.com/opencord/bbsim/internal/bbsim/types"
 	omci "github.com/opencord/omci-sim"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	log "github.com/sirupsen/logrus"
 )
 
diff --git a/internal/bbsim/responders/eapol/eapol_test.go b/internal/bbsim/responders/eapol/eapol_test.go
index 824ce65..05dcf9f 100644
--- a/internal/bbsim/responders/eapol/eapol_test.go
+++ b/internal/bbsim/responders/eapol/eapol_test.go
@@ -22,7 +22,7 @@
 	"testing"
 
 	"github.com/looplab/fsm"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	"google.golang.org/grpc"
 	"gotest.tools/assert"
 )
diff --git a/internal/bbsim/responders/igmp/igmp.go b/internal/bbsim/responders/igmp/igmp.go
index defbe19..5390347 100644
--- a/internal/bbsim/responders/igmp/igmp.go
+++ b/internal/bbsim/responders/igmp/igmp.go
@@ -15,25 +15,28 @@
 
 import (
 	"encoding/binary"
+	"encoding/hex"
+	"errors"
+	"github.com/opencord/bbsim/internal/bbsim/packetHandlers"
 	"net"
 	"time"
 
 	"github.com/google/gopacket"
 	"github.com/google/gopacket/layers"
 	bbsim "github.com/opencord/bbsim/internal/bbsim/types"
-	omci "github.com/opencord/omci-sim"
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 	log "github.com/sirupsen/logrus"
 )
 
-func SendIGMPLeaveGroupV2(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32, macAddress net.HardwareAddr, stream bbsim.Stream) error {
+func SendIGMPLeaveGroupV2(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32,
+	gemPortId uint32, macAddress net.HardwareAddr, cTag int, pbit uint8, stream bbsim.Stream) error {
 	log.WithFields(log.Fields{
 		"OnuId":        onuId,
 		"SerialNumber": serialNumber,
 		"PortNo":       portNo,
 	}).Debugf("Entered SendIGMPLeaveGroupV2")
 	igmp := createIGMPV2LeaveRequestPacket()
-	pkt, err := serializeIgmpPacket(ponPortId, onuId, macAddress, igmp)
+	pkt, err := serializeIgmpPacket(ponPortId, onuId, cTag, macAddress, pbit, igmp)
 
 	if err != nil {
 		log.WithFields(log.Fields{
@@ -44,21 +47,11 @@
 		return err
 	}
 
-	gemid, err := omci.GetGemPortId(ponPortId, onuId)
-	if err != nil {
-		log.WithFields(log.Fields{
-			"OnuId":        onuId,
-			"IntfId":       ponPortId,
-			"SerialNumber": serialNumber,
-		}).Errorf("Can't retrieve GemPortId for IGMP: %s", err)
-		return err
-	}
-
 	data := &openolt.Indication_PktInd{
 		PktInd: &openolt.PacketIndication{
 			IntfType:  "pon",
 			IntfId:    ponPortId,
-			GemportId: uint32(gemid),
+			GemportId: gemPortId,
 			Pkt:       pkt,
 			PortNo:    portNo,
 		},
@@ -77,14 +70,11 @@
 	return nil
 }
 
-func SendIGMPMembershipReportV2(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32, macAddress net.HardwareAddr, stream bbsim.Stream) error {
-	log.WithFields(log.Fields{
-		"OnuId":        onuId,
-		"SerialNumber": serialNumber,
-		"PortNo":       portNo,
-	}).Debugf("Entered SendIGMPMembershipReportV2")
+func SendIGMPMembershipReportV2(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32,
+	gemPortId uint32, macAddress net.HardwareAddr, cTag int, pbit uint8, stream bbsim.Stream) error {
+
 	igmp := createIGMPV2MembershipReportPacket()
-	pkt, err := serializeIgmpPacket(ponPortId, onuId, macAddress, igmp)
+	pkt, err := serializeIgmpPacket(ponPortId, onuId, cTag, macAddress, pbit, igmp)
 
 	if err != nil {
 		log.WithFields(log.Fields{
@@ -95,21 +85,11 @@
 		return err
 	}
 
-	gemid, err := omci.GetGemPortId(ponPortId, onuId)
-	if err != nil {
-		log.WithFields(log.Fields{
-			"OnuId":        onuId,
-			"IntfId":       ponPortId,
-			"SerialNumber": serialNumber,
-		}).Errorf("Can't retrieve GemPortId for IGMP: %s", err)
-		return err
-	}
-
 	data := &openolt.Indication_PktInd{
 		PktInd: &openolt.PacketIndication{
 			IntfType:  "pon",
 			IntfId:    ponPortId,
-			GemportId: uint32(gemid),
+			GemportId: gemPortId,
 			Pkt:       pkt,
 			PortNo:    portNo,
 		},
@@ -125,17 +105,24 @@
 		}).Errorf("Fail to send IGMP PktInd indication")
 		return err
 	}
+
+	log.WithFields(log.Fields{
+		"OnuId":        onuId,
+		"SerialNumber": serialNumber,
+		"PortNo":       portNo,
+	}).Debugf("Sent SendIGMPMembershipReportV2")
 	return nil
 }
 
-func SendIGMPMembershipReportV3(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32, macAddress net.HardwareAddr, stream bbsim.Stream) error {
+func SendIGMPMembershipReportV3(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32,
+	gemPortId uint32, macAddress net.HardwareAddr, cTag int, pbit uint8, stream bbsim.Stream) error {
 	log.WithFields(log.Fields{
 		"OnuId":        onuId,
 		"SerialNumber": serialNumber,
 		"PortNo":       portNo,
 	}).Debugf("Entered SendIGMPMembershipReportV3")
 	igmp := createIGMPV3MembershipReportPacket()
-	pkt, err := serializeIgmpPacket(ponPortId, onuId, macAddress, igmp)
+	pkt, err := serializeIgmpPacket(ponPortId, onuId, cTag, macAddress, pbit, igmp)
 
 	if err != nil {
 		log.WithFields(log.Fields{
@@ -146,21 +133,11 @@
 		return err
 	}
 
-	gemid, err := omci.GetGemPortId(ponPortId, onuId)
-	if err != nil {
-		log.WithFields(log.Fields{
-			"OnuId":        onuId,
-			"IntfId":       ponPortId,
-			"SerialNumber": serialNumber,
-		}).Errorf("Can't retrieve GemPortId for IGMP: %s", err)
-		return err
-	}
-
 	data := &openolt.Indication_PktInd{
 		PktInd: &openolt.PacketIndication{
 			IntfType:  "pon",
 			IntfId:    ponPortId,
-			GemportId: uint32(gemid),
+			GemportId: gemPortId,
 			Pkt:       pkt,
 			PortNo:    portNo,
 		},
@@ -178,7 +155,34 @@
 	return nil
 }
 
-func createIGMPV3MembershipReportPacket() IGMP {
+func HandleNextPacket(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32,
+	gemPortId uint32, macAddress net.HardwareAddr, pkt gopacket.Packet, cTag int, pbit uint8, stream bbsim.Stream) error {
+
+	igmpLayer := pkt.Layer(layers.LayerTypeIGMP)
+	if igmpLayer == nil {
+		log.WithFields(log.Fields{
+			"OnuId":        onuId,
+			"SerialNumber": serialNumber,
+			"PortNo":       portNo,
+			"Pkt":          hex.EncodeToString(pkt.Data()),
+		}).Error("This is not an IGMP packet")
+		return errors.New("packet-is-not-igmp")
+	}
+
+	log.WithFields(log.Fields{
+		"Pkt": pkt.Data(),
+	}).Trace("IGMP packet")
+
+	igmp := igmpLayer.(*layers.IGMPv1or2)
+
+	if igmp.Type == layers.IGMPMembershipQuery {
+		_ = SendIGMPMembershipReportV2(ponPortId, onuId, serialNumber, portNo, gemPortId, macAddress, cTag, pbit, stream)
+	}
+
+	return nil
+}
+
+func createIGMPV3MembershipReportPacket() *IGMP {
 
 	groupRecord1 := IGMPv3GroupRecord{
 		Type:             IGMPv3GroupRecordType(IGMPIsIn),
@@ -198,8 +202,8 @@
 		AuxData:          0, // NOT USED
 	}
 
-	igmpDefault := IGMP{
-		Type:                    0x22, //IGMPV3 Membership Report
+	igmpDefault := &IGMP{
+		Type:                    layers.IGMPMembershipReportV3, //IGMPV3 Membership Report
 		MaxResponseTime:         time.Duration(1),
 		Checksum:                0,
 		GroupAddress:            net.IPv4(224, 0, 0, 22),
@@ -216,10 +220,18 @@
 	return igmpDefault
 }
 
-//func serializeIgmpPacket(intfId uint32, onuId uint32, srcMac net.HardwareAddr, igmp *layers.IGMP) ([]byte, error) {
-func createIGMPV2MembershipReportPacket() IGMP {
-	return IGMP{
-		Type:            0x16, //IGMPV2 Membership Report
+func createIGMPV2MembershipReportPacket() *IGMP {
+	return &IGMP{
+		Type:         layers.IGMPMembershipReportV2, //IGMPV2 Membership Report
+		Checksum:     0,
+		GroupAddress: net.IPv4(224, 0, 0, 22),
+		Version:      2,
+	}
+}
+
+func createIGMPV2LeaveRequestPacket() *IGMP {
+	return &IGMP{
+		Type:            layers.IGMPLeaveGroup, //IGMPV2 Leave Group
 		MaxResponseTime: time.Duration(1),
 		Checksum:        0,
 		GroupAddress:    net.IPv4(224, 0, 0, 22),
@@ -227,17 +239,7 @@
 	}
 }
 
-func createIGMPV2LeaveRequestPacket() IGMP {
-	return IGMP{
-		Type:            0x17, //IGMPV2 Leave Group
-		MaxResponseTime: time.Duration(1),
-		Checksum:        0,
-		GroupAddress:    net.IPv4(224, 0, 0, 22),
-		Version:         2,
-	}
-}
-
-func serializeIgmpPacket(intfId uint32, onuId uint32, srcMac net.HardwareAddr, igmp IGMP) ([]byte, error) {
+func serializeIgmpPacket(intfId uint32, onuId uint32, cTag int, srcMac net.HardwareAddr, pbit uint8, igmp *IGMP) ([]byte, error) {
 	buffer := gopacket.NewSerializeBuffer()
 	options := gopacket.SerializeOptions{
 		ComputeChecksums: true,
@@ -265,28 +267,22 @@
 		return nil, err
 	}
 
-	return buffer.Bytes(), nil
+	untaggedPkt := gopacket.NewPacket(buffer.Bytes(), layers.LayerTypeEthernet, gopacket.Default)
+	taggedPkt, err := packetHandlers.PushSingleTag(cTag, untaggedPkt, pbit)
+
+	if err != nil {
+		log.Error("TagPacket")
+		return nil, err
+	}
+
+	return taggedPkt.Data(), nil
 }
 
 //-----------------------------------------***********************---------------------------------
-// BaseLayer is a convenience struct which implements the LayerData and
-// LayerPayload functions of the Layer interface.
-type BaseLayer struct {
-	// Contents is the set of bytes that make up this layer.  IE: for an
-	// Ethernet packet, this would be the set of bytes making up the
-	// Ethernet frame.
-	Contents []byte
-	// Payload is the set of bytes contained by (but not part of) this
-	// Layer.  Again, to take Ethernet as an example, this would be the
-	// set of bytes encapsulated by the Ethernet protocol.
-	Payload []byte
-}
-
-type IGMPType uint8
 
 type IGMP struct {
-	BaseLayer
-	Type                    IGMPType
+	layers.BaseLayer
+	Type                    layers.IGMPType
 	MaxResponseTime         time.Duration
 	Checksum                uint16
 	GroupAddress            net.IP
@@ -343,8 +339,7 @@
 // SerializeTo writes the serialized form of this layer into the
 // SerializationBuffer, implementing gopacket.SerializableLayer.
 // See the docs for gopacket.SerializableLayer for more info.
-func (igmp IGMP) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
-	log.Debugf("Serializing IGMP Packet")
+func (igmp *IGMP) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
 	data, err := b.PrependBytes(8915)
 	if err != nil {
 		return err
@@ -410,4 +405,6 @@
 	return ^uint16(csum)
 }
 
-func (IGMP) LayerType() gopacket.LayerType { return layers.LayerTypeIGMP }
+func (i *IGMP) LayerType() gopacket.LayerType { return layers.LayerTypeIGMP }
+func (i *IGMP) LayerContents() []byte         { return i.Contents }
+func (i *IGMP) LayerPayload() []byte          { return i.Payload }
diff --git a/internal/bbsim/responders/igmp/igmp_test.go b/internal/bbsim/responders/igmp/igmp_test.go
new file mode 100644
index 0000000..a1788c0
--- /dev/null
+++ b/internal/bbsim/responders/igmp/igmp_test.go
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package igmp
+
+import (
+	"encoding/hex"
+	"fmt"
+	"github.com/google/gopacket"
+	"github.com/google/gopacket/layers"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
+	"github.com/stretchr/testify/assert"
+	"google.golang.org/grpc"
+	"net"
+	"testing"
+)
+
+type mockStream struct {
+	CallCount int
+	Calls     map[int]*openolt.Indication
+	grpc.ServerStream
+}
+
+func (s *mockStream) Send(ind *openolt.Indication) error {
+	s.CallCount++
+	s.Calls[s.CallCount] = ind
+	return nil
+}
+
+func TestHandleNextPacket(t *testing.T) {
+
+	t.Skip("Need to find how to serialize an IGMP packet")
+
+	stream := &mockStream{
+		CallCount: 0,
+		Calls:     make(map[int]*openolt.Indication),
+	}
+
+	mac := net.HardwareAddr{0x2e, 0x60, 0x70, 0x13, 0x15, 0x16}
+
+	packetData := []byte{
+		1, 0, 94, 0, 0, 22, 222, 173, 190, 239, 186, 17, 8, 0, 70, 0, 0, 32, 0, 0, 0, 0, 120, 2, 191,
+		215, 10, 244, 2, 246, 224, 0, 0, 22, 148, 4, 0, 0, 17, 10, 14, 223, 224, 0, 0, 22, 0, 0, 0, 0,
+		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	}
+	fmt.Println(hex.EncodeToString(packetData))
+
+	packet := gopacket.NewPacket(packetData, layers.LayerTypeIPv4, gopacket.Default)
+
+	fmt.Println(hex.EncodeToString(packet.Data()))
+
+	fmt.Println(packet.Layers())
+
+	err := HandleNextPacket(0, 0, "FOO", 1, 1024, mac, packet, 55, 5, stream)
+	assert.Nil(t, err)
+
+	assert.Equal(t, 1, stream.CallCount)
+}
diff --git a/internal/bbsim/types/interfaces.go b/internal/bbsim/types/interfaces.go
index 53a05b4..6a12136 100644
--- a/internal/bbsim/types/interfaces.go
+++ b/internal/bbsim/types/interfaces.go
@@ -17,7 +17,7 @@
 package types
 
 import (
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 )
 
 // represent a gRPC stream
diff --git a/internal/bbsimctl/commands/onu.go b/internal/bbsimctl/commands/onu.go
index 20837b5..5f6874b 100644
--- a/internal/bbsimctl/commands/onu.go
+++ b/internal/bbsimctl/commands/onu.go
@@ -45,6 +45,8 @@
 const IgmpLeaveKey string = "leave"
 const IgmpJoinKeyV3 string = "joinv3"
 
+var IgmpAllowedActions = []string{IgmpJoinKey, IgmpLeaveKey, IgmpJoinKeyV3}
+
 type ONUList struct {
 	Verbose bool `short:"v" long:"verbose" description:"Print all the informations we have about ONUs"`
 }
@@ -445,6 +447,16 @@
 	return list
 }
 
+func (onuSn *IgmpSubAction) Complete(match string) []flags.Completion {
+	list := make([]flags.Completion, 0)
+	for _, k := range IgmpAllowedActions {
+		if strings.HasPrefix(k, match) {
+			list = append(list, flags.Completion{Item: k})
+		}
+	}
+	return list
+}
+
 func (options *ONUTrafficSchedulers) Execute(args []string) error {
 	client, conn := connect()
 	defer conn.Close()
diff --git a/internal/bbsimctl/commands/services.go b/internal/bbsimctl/commands/services.go
index cd1ccb4..3333a49 100644
--- a/internal/bbsimctl/commands/services.go
+++ b/internal/bbsimctl/commands/services.go
@@ -28,7 +28,7 @@
 )
 
 const (
-	DEFAULT_SERVICE_HEADER_FORMAT = "table{{ .OnuSn }}\t{{ .InternalState }}\t{{ .Name }}\t{{ .HwAddress }}\t{{ .STag }}\t{{ .CTag }}\t{{ .NeedsEapol }}\t{{ .NeedsDhcp }}\t{{ .NeedsIgmp }}\t{{ .GemPort }}\t{{ .EapolState }}\t{{ .DhcpState }}"
+	DEFAULT_SERVICE_HEADER_FORMAT = "table{{ .OnuSn }}\t{{ .InternalState }}\t{{ .Name }}\t{{ .HwAddress }}\t{{ .STag }}\t{{ .CTag }}\t{{ .NeedsEapol }}\t{{ .NeedsDhcp }}\t{{ .NeedsIgmp }}\t{{ .GemPort }}\t{{ .EapolState }}\t{{ .DhcpState }}\t{{ .IGMPState }}"
 )
 
 type ServiceList struct{}
diff --git a/internal/common/helpers.go b/internal/common/helpers.go
index c1bf936..77d4607 100644
--- a/internal/common/helpers.go
+++ b/internal/common/helpers.go
@@ -20,7 +20,7 @@
 	"net"
 	"strconv"
 
-	"github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-protos/v3/go/openolt"
 )
 
 func OnuSnToString(sn *openolt.SerialNumber) string {
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
